letsencrypt 生成免费的证书

 阅读约 5 分钟

给自己的网站加个证书,也就提高了网站数据传输过程中的安全性。今天使用的是 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;
...
}
阅读 308更新于 2019-11-22

推荐阅读
目录