前言

之前写过一篇「HTTPS时代,免费SSL获取与配置(Apache版)」, 使用的是sslforfree.org 服务,这个服务比较傻瓜,按照步骤一步一步就可以得到证书,但是因为证书最长的过期时间是3个月,每次都需要苦逼得重新去操作一遍。虽然 sslforfree.org 也会发邮件提醒,每3个月操作一下真的很麻烦(终于知道大姨妈的感觉了)。

自动化?

作为 Geeker ,能自动化肯定要自动化,于是搜索了很多资料,看看怎么样可以实现 sslforfree 证书的自动申请,搜索结果终于找到了真相,原来 sslforfree.org 用的是 letsencrypt.org 的服务。里面详细写明了为什么证书只有3个月的原因------为了安全,就是要让你们(自)折(动)腾(化)!

Certbot

官方推荐使用 CertBot的服务。打开网站,按照提示一步一步选择服务器操作系统,网页服务就会自动提示命令行,无脑复制粘贴即可。下面以CentOS 6.x + Apache为例。

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
sudo ./certbot-auto --manual certonly

根据提示输入邮箱和域名,然后再在相应的目录下面创建文件,即可生成证书文件

修改 httpd.conf

SSLCertificateKeyFile /etc/letsencrypt/live/www.yourdomain.com/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/www.yourdomain.com/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.yourdomain.com/chain.pem

设置 crontab实现自动更新证书

0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && /path/to/certbot-auto renew 

如果生成证书的是用 manual 模式,那么一定概要设置 --manual-auth-hook 设定验证脚本,否则无法自动更新

#!/bin/bash
echo $CERTBOT_VALIDATION > /usr/share/nginx/html/mimvp_home/.well-known/acme-challenge/$CERTBOT_TOKEN
/path/to/certbot-auto renew   --manual-auth-hook  /etc/letsencrypt/renewal/mimji.com.sh

One more thing -- wildcard

./certbot-auto certonly --agree-tos --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory -d "*.<your host>"

参考资料


Tim_Pan
222 声望5 粉丝

当被琐事压的喘不过气,静静地写行代码,解个谜题,这个世界仿佛又重新属于我