阿里云快速给网站部署Let's Encrypt免费SSL证书

环境:CentOS 7.2 + Nginx

1、安装

wget https://dl.eff.org/certbot-auto 

chmod a+x certbot-auto 

./certbot-auto

执行自动安装会下载和安装需要的环境组件等,总之我们执行就可以,遇到需要安装与否的输入y后回车

如果遇到nginx路径不对的可以指定路径 ./certbot-auto --nginx --nginx-server-root=/usr/local/nginx/conf

2、生成域名证书


A - 单域名

 

 代码如下

./certbot-auto certonly --email admin@laobuluo.com --agree-tos --webroot -w /data/wwwroot/ssl.laobuluo.com -d ssl.laobuluo.com

 

B - 多域名

 

 代码如下

./certbot-auto certonly --email admin@laobuluo.com --agree-tos --webroot -w /var/www/laozuo -d laozuo.org -d www.laozuo.org -w /var/www/laobuluo -d laobuluo.com -d www.laobuluo.com

 

如果我们是多域名可以参考上面的进行多域名设置。域名进行修改和调整

3、找到我们的网站证书

我们可以在上面生成完成看到证书被放到/etc/letsencrypt/live/ssl.laobuluo.com/目录中,这个我们根据自己网址的文档区别。里面可以看到有cert.pem 、chain.pem 、 fullchain.pem  、privkey.pem四个文件。

4、将SSL文件部署到网站中


cert.pem 申请的服务器证书文件 
privkey.pem 服务器证书对应的私钥 
chain.pem 除服务器证书外,浏览器解析所需的其他全部证书,比如根证书和中间证书 
fullchain.pem 包含服务器证书的全部证书链文件

配置nginx,需要生成dhparam.pem文件

sudo openssl dhparam -out  /etc/ssl/certs/dhparam.pem   2048
  • 1

     修改nginx.conf文件

  1. 修改80端口的监听
  • server
        {
            listen 80;
            return 301 https://域名$request_uri;
            server_name 域名 域名;
        }

  1. 增加以下代码
        
server {
        listen 443 ssl;
        server_name 域名;
        ssl_certificate /etc/letsencrypt/live/域名/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/域名/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_stapling on;
        ssl_stapling_verify on;
        add_header Strict-Transport-Security max-age=15768000;
        # The rest of your server block
        root /path/to/root;
        index index.html index.htm;
        location / {
                try_files $uri $uri/ =404;
        }
}

配置完成后重启nginx 







5、自动续期


在特定目录,先写续签脚本,保存为renew-cert.sh (记得给它X权限 chmod u+x renew-cert.sh)


#!/bin/bash
#stop nginx
/etc/init.d/nginx stop
# 续签
/home/certbot-auto renew --quiet

# 重启 nginx
/etc/init.d/nginx start


每月 1 日凌晨 3 点执行续签:


crontab -e
00 03 1 * *  ./特定目的/renew-cert.sh
service crond restart




分享至
2020-06-12 发布 ┊ 1999 人浏览 ┊ 1 人评论 ┊ 来源:原创 ┊ 收藏
返回顶部