环境: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、生成域名证书
代码如下 |
|
./certbot-auto certonly --email admin@laobuluo.com --agree-tos --webroot -w /data/wwwroot/ssl.laobuluo.com -d ssl.laobuluo.com
|
代码如下 |
|
./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修改nginx.conf文件
server { listen 80; return 301 https://域名$request_uri; server_name 域名 域名; }
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