前言
之前写过一篇「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>"
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。