用Certbot 獲取和自動更新SSL證書

前言

以前寫過一篇「HTTPS時代,免費SSL獲取與配置(Apache版)」, 使用的是sslforfree.org 服務,這個服務比較傻瓜,按照步驟一步一步就能夠獲得證書,可是由於證書最長的過時時間是3個月,每次都須要苦逼得從新去操做一遍。雖然 sslforfree.org 也會發郵件提醒,每3個月操做一下真的很麻煩(終於知道大姨媽的感受了)。html

自動化?

做爲 Geeker ,能自動化確定要自動化,因而搜索了不少資料,看看怎麼樣能夠實現 sslforfree 證書的自動申請,搜索結果終於找到了真相,原來 sslforfree.org 用的是 letsencrypt.org 的服務。裏面詳細寫明瞭爲何證書只有3個月的緣由------爲了安全,就是要讓大家(自)折(動)騰(化)!python

Certbot

官方推薦使用 CertBot的服務。打開網站,按照提示一步一步選擇服務器操做系統,網頁服務就會自動提示命令行,無腦複製粘貼便可。下面以CentOS 6.x + Apache爲例。nginx

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

根據提示輸入郵箱和域名,而後再在相應的目錄下面建立文件,便可生成證書文件apache

修改 httpd.confsegmentfault

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實現自動更新證書centos

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

若是生成證書的是用 manual 模式,那麼必定概要設置 --manual-auth-hook 設定驗證腳本,不然沒法自動更新api

#!/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>"

參考資料

相關文章
相關標籤/搜索