最近有小伙伴跟我反馈,说我的博客SSL证书过期了。我看了下,确实过期了。我思考了片刻,并问了自己一个问题:能不能白嫖一张SSL证书,并且永不过期?
答案是可以!即使用免费,开源的自动化证书管理工具——Certbot
我研究了下官网,并花了点时间对Certbot证书进行了落地。下面是官网:https://certbot.eff.org
安装
yum install -y certbot
制作Certbot证书
Certbot证书不受平台监管,免费且开源,绕过了阿里云等平台每年20张的限制。很香!!!
certbot certonly --standalone -d blog.wuxian.pro
# 执行完上面的脚本后,会在目录下生成相应的公钥和私钥
# /etc/letsencrypt/live/blog.wuxian.pro/fullchain.pem;
# /etc/letsencrypt/live/blog.wuxian.pro/privkey.pem;
配置Web服务器
server {
listen 443 ssl;
server_name blog.wuxian.pro;
error_log logs/error.log;
access_log logs/access.log;
ssl_certificate /etc/letsencrypt/live/blog.wuxian.pro/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.wuxian.pro/privkey.pem;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
gzip on;
...
定制自动续约脚本
我结合certbot的续约特性,花了点时间写了自动续约的脚本。大概意思就是: 每天早上3点自动检测证书是否过期,如果过期就对其进行续约,以达到永不过期的目的。
#!/bin/bash
#停车
/opt/nginx/sbin/nginx -s stop
#续约检测
/usr/bin/certbot renew --dry-run
#发车
/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
设计定时任务
用定时任务,每天早上3点的时候执行续约脚本certbot_renew_ssl.sh 0 3 * * * /usr/local/script/certbot_renew_ssl.sh >> /usr/local/script/certbot_renew_ssl.log
日志
打开/var/spool/mail/root然后浏览日志,确定续约脚本是否被成功执行。 #tail -f /var/log/cron
tail -f /var/spool/mail/root
最后
只需简简单单的几步,一张永不过期的SSL证书就做好了,是不是很简单。
|