Nginx配置永久免费的SSL证书

背景:
一开始是在阿里云上申请免费SSL证书,有效期一年,到期后重新申请。由于域名比较多,每个域名的证书申请时间都不一样,总是隔三差五的有证书到期提醒,不胜其烦。

这里我们使用的是Let’s Encrypt签发的证书,配合Certbot客户端,由于申请的免费证书有效期只有90天,所以我们需要再配置一个定时任务,定期检测更新证书

1、系统环境
系统:centos7
python:v2.7x

2、安装Certbot客户端

1
> yum install certbot-nginx

3、生成证书,一次只能配置生成一个域名的证书,如果有多个域名,该命令多执行几次即可

1
> certbot --authenticator standalone --installer nginx --pre-hook "nginx -s stop" --post-hook "nginx"

生成过程中需要指定域名,填写邮箱,然后一步步按照提示执行即可

4、查看配置
正常生成证书后,会在指定的域名配置下自动加上证书的路径,示例如下

1
2
3
4
5
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/host_name/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/host_name/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

5、更新证书

1
> certbot renew

6、配置定时任务,vim /etc/crontab新增以下内容

1
2
# 每天0点、12点检测更新
0 0,12 * * * root /usr/bin/certbot renew

安装配置很简单,这里我们主要说下可能会出现的错误:
1、ImportError: No module named ‘requests.packages.urllib3’
解决办法:

1
2
> pip uninstall urllib3
> pip install --upgrade urllib3

2、ImportError: ‘pyOpenSSL’ module missing required functionality. Try upgrading to v0.14 or newer.
解决办法:

1
2
3
4
> yum remove pyOpenSSL
> yum install openssl-devel python-devel
> pip install certbot
> pip install certbot-nginx

JouyPub wechat
欢迎订阅「K叔区块链」 - 专注于区块链技术学习