参考文章:
1.Let’s Encrypt官网:https://letsencrypt.org/
2.certbot工具官网:https://certbot.eff.org/
3.VPS侦探提供的Let’s Encrypt证书安装教程:https://www.vpser.net/build/letsencrypt-certbot.html
1.启用EPEL
阿里云的CentOS7不用配这个,暂时先不管。
2.安装certbot
yum install certbot
3.使用webroot模式生成证书
首先配置well-known(/.well-known/acme-challenge)的URL,编辑/usr/local/nginx/conf/vhost/的各个conf文件
在
location ~ /\. { deny all; }
前面加上
location ~ /.well-known/acme-challenge/(.*) { default_type text/plain; }
然后执行
/etc/init.d/nginx reload
然后执行certbot的webroot模式生成证书
certbot certonly --webroot -w /data/wwwroot/www.xxx.com -d www.xxx.com -w /data/wwwroot/file.xxx.com
其中-w指定网站所在目录,-d指定域名,下面这个是certbot官网给的例子
certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com -w /var/www/thing -d thing.is -d m.thing.is
成功之后会提示pem文件的保存目录
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/www.vvvtimes.com/fullchain.pem.
出现这个提示说明生成证书成功。
4.nginx配置证书
编辑/usr/local/nginx/conf/vhost/的各个conf文件
在listen 80 后添加 listen 443 ssl;
在root /data/wwwroot/www.xxx.com; 后添加
ssl_certificate /etc/letsencrypt/live/www.xxx.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.xxx.com/privkey.pem; ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5"; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m;
注意将ssl_certificate和ssl_certificate_key改成你自己的证书目录
保存之后,使用reload命令重新载入配置文件
/etc/init.d/nginx reload
5.续期和更新
由于Let’s Encrypt证书只有90天有效期,可以使用crontab定时任务进行更新
crontab -e
编辑crontab任务,下面这个任务每个12小时续期一次,12小时也是官方推荐的频率
0 */12 * * * certbot renew --quiet --renew-hook "/etc/init.d/nginx reload"
更新之前可以下面这个命令模拟更新,看一下是否能更新成功
certbot renew --dry-run
关于证书的删除
添加好了证书,也就皆大欢喜了
但是也不免会有删除证书的情况,官方的教程却并没有提到删除证书的信息
下面是从网络上找到的方法,感觉还是蛮有用的
cd /etc/letsencrypt/archiverm -rf xinpure.com/cd /etc/letsencrypt/liverm -rf xinpure.com/cd /etc/letsencrypt/renewalrm xinpure.com.conf
备注:(自留其他人可忽略)
/usr/local/certbot/certbot-auto certonly --webroot -w /data/wwwroot/www.xxx.com -d www.xxx.com -w /data/wwwroot/file.xxx.com