但免費版的SSL證書只有三個月,因此每三個月就得手動更新,實在有些不便,雖然可設定與透過指令方式,進行證書的換發,但每當看到教學文章,就讓梅干有點卻步,因為過程實在有些繁索,因此梅干在上周花了點時間,終於成功的在VPS的主機中,安裝Let’s Encrypt並取得證書,同時也順利的將憑證安裝完畢,以及啟用排程,每三個月就會自動申請憑證與更新,因此有在使用VPS主機的朋友,不妨也可參考看看囉!
主機環境
1.系統:Ubuntu 18.04 x86_64
2.環境:Docker
3.Web主機:Apache
4.代理主機:Nginx
2.環境:Docker
3.Web主機:Apache
4.代理主機:Nginx
下載 Let’s Encrypt SSL 憑證模組:
Step1
首先,先SSH登入主機,並輸入下方的指令,當完成後,再輸入ls,這時在主機的根目錄底下,就會看到letsencryt的資料夾。
apt-get install -y git
git clone https://github.com/letsencrypt/letsencrypt
git clone https://github.com/letsencrypt/letsencrypt
Let’s Encrypt SSL 憑證申請:
Step2
接進進入letsencrypt的資料夾後,再輸入下方的指令,並將{}替換成你的,這樣就可取得SSL憑證,在取得的過程中,會跳出此訊息,若要接受相關的訊息就按y。
cd letsencrypt
./letsencrypt-auto certonly –email {Email} -d {example.com} -d {www.example.com} –webroot -w {網站根目錄} –agree-tos
./letsencrypt-auto certonly –email {Email} -d {example.com} -d {www.example.com} –webroot -w {網站根目錄} –agree-tos
Step3
當憑證安裝成功時,就會看到下方的訊息,同時告知證書的到期日,以及在憑證到期的5~7內,可再重新發送新的憑證。
Step4
當憑證發送完成時,會在/etc/letsencrypt/ive/{域名}/目錄下,分別會看到四個pem檔,但只需引用fullchain.pem與privkey.pem檔就可以了。
1.cert.pem 服務端證書
2.chain.pem 瀏覽器需要的證書
3.fullchain.pem 包含cert.pem與chain.pem證書
4.privkey.pem 私有金鑰
2.chain.pem 瀏覽器需要的證書
3.fullchain.pem 包含cert.pem與chain.pem證書
4.privkey.pem 私有金鑰
Let’s Encrypt SSL 憑證設定:
Step5
接著開啟docker-compose.yml,在nginx的volumes地方,將容器加入二個pem的目錄位置。
– /etc/letsencrypt/live/{域名}/fullchain.pem:/etc/letsencrypt/live/{域名}/fullchain.pem
– /etc/letsencrypt/live/{域名}/privkey.pem:/etc/letsencrypt/live/{域名}/privkey.pem
Step6
接著再開啟nginx.conf加入433port,與ssl證書目錄位置。
listen [::]:443 ssl ipv6only=on http2;
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/minwt.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/minwt.net/privkey.pem;
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/minwt.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/minwt.net/privkey.pem;
Step7
接著,重啟docker-compose,順利的話,就會看到鎖頭啦!
Let’s Encrypt SSL 自動更新憑證:
Step8
日後當要重發證書時,只需下letsencrypt-auto renew指定,並重新載入nginx的設定檔,就可完成憑證更新,而這時可將它寫成sh檔,放置在主機中,並設定好排程,就可完成自動SSL證書更新啦!
renew.sh
/root/letsencrypt/letsencrypt-auto renew
docker container exec {container ID} nginx -s reload
docker container exec {container ID} nginx -s reload
Step9
上傳到主機的根目錄中。
Step10
接著輸入crontab -e,設定排程「30 2 * * 0 /root/renew.sh」,而排程的時間分別為「分」、「時」、「日」、「月」、「星期」,所以就會在每周日,半夜2:30進行憑證重發,但憑證若尚未到期,就不會更新,都設定好後,就將它儲存並退出,這樣就大功告成囉!