评论

收藏

[PHP] 如何白嫖一张永不过期的SSL证书

开发技术 开发技术 发布于:2024-11-17 21:47 | 阅读数:147 | 评论:0

最近有小伙伴跟我反馈,说我的博客SSL证书过期了。我看了下,确实过期了。我思考了片刻,并问了自己一个问题:能不能白嫖一张SSL证书,并且永不过期?

答案是可以!即使用免费,开源的自动化证书管理工具——Certbot


我研究了下官网,并花了点时间对Certbot证书进行了落地。下面是官网:https://certbot.eff.org

640.jpg
安装

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
640.jpg
最后

只需简简单单的几步,一张永不过期的SSL证书就做好了,是不是很简单。