给自己的网站加个证书,也就提高了网站数据传输过程中的安全性。今天使用的是 Let't sencrypt公益免费颁发证书的机构。证书的可用性是3个月,超过3个月需要重新生成证书。但是!这证书的重新颁发可以用脚本来做这个动作,项目在Github上。
先决条件
1.得要有一个域名
2.域名解析web主机IP
安装 acme.sh
curl https://get.acme.sh | sh
哪个用户执行这个命令,那么就cd ~/.acme.sh
生成证书
#apache
./acme.sh --issue -d 域名.com --apache
#nginx
./acme.sh --issue -d 域名.com --nginx
注意:证书已经生成了,但是还不能用,不能直接将文件添加到httpd.conf/nginx.conf里
安装证书
./acme.sh --installcert -d <domain>.com \
--key-file /root/ssl/<domain>.com \
--fullchain-file /root/ssl/fullchain.cer
#位置不一定就是这里,得看具体web的配置文件内容
#key 位置:/etc/nginx/ssl/<domain>.key
#证书 位置:/etc/nginx/ssl/fullchain.cer
修改web配置文件
nginx
cd /etc/nginx/
vim nginx.conf
server{
...
ssl on;
ssl_certificate /root/ssl/fullchain.cer;
ssl_certificate_key /root/ssl/域名.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EE
H+3DES:RSA+3DES:!MD5";
ssl_session_cache builtin:1000 shared:SSL:10m;
...
}
#ssl 这些默认在conf文件中是没有的,需要添加的
apache
cd /etc/httpd/conf.d/
vim ssl.conf #没有这个文件: yum install mod_ssl -y
#修改一下内容
...
SSLCertificateFile /root/ssl/域名.com.cer
...
SSLCertificateKeyFile /root/ssl/域名.com.key
...
SSLCertificateChainFile /root/ssl/fullchain.cer
...
systemctl restart httpd
问题1:开放443端口
1. 使用`firewalld`的:sudo firewall-cmd –permanent –add-service=https
2. 如阿里云、腾讯云、AWS等一些正规大规模的主机服务商,都需要在后台控制台-安全组,开放443端口
问题2:http转https
#apache
vim /etc/httpd/conf/httpd.conf
server{
...
#88行
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
...
}
#nginx
server
{
listen 80;
#listen [::]:80;
server_name dl.sudojs.net;
root /home/download;
access_log /home/wwwlogs/dl.sudojs.net_80.log;
location /.well-known {
alias /home/wwwroot/default/.well-known;
}
location / { #将80端口的302转到https
return 302 https://$server_name$request_uri;
}
}
server
{
listen 443 ssl http2;
#listen [::]:443 ipv6only=on;
server_name dl.sudojs.net;
root /home/download;
...
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。