วิธี auto renew ssl ให้ Ghost บน Digital ocean
ก่อนหน้านี้ผมได้บอกวิธีการติดตั้ง Ghost+ssl บน Digital ocean โครตง่าย!!! กันมาแล้ว ผมดันลืมไปว่ามันใช้งาน SSL ของ let's encrypt ซึ่งมันจะมีอายุแค่ 90 วันเท่านั้น เมื่อครบกำหนด SSL ของเราก็จะหมดอายุทันที และทำให้ไม่สามารถเข้าเว็บได้
เราจึงต้องทำการต่ออายุ SSL ทุก 90 วัน มีวิธีการดังนี้
ทำการ ssh เข้า server
ssh เข้า server ghost ของเราก่อน
ssh root@domain.com
อัพเดทไฟล์ acme.sh
ถ้าใครติดตั้งตามที่ผมเคยบอกไปมันคือการติดตั้งผ่าน DigitalOcean Marketplace มันจะมีปัญหาของไฟล์ acme.sh
ที่ไม่ได้มีการอัพเดท เราจึงต้องอัพเดทมันก่อน
sudo su
sudo /etc/letsencrypt/acme.sh --upgrade -b dev
หลังจากนั้นไฟล์จะถูกเก็บไว้ที่ /root/.acme.sh/acme.sh
ให้ลองดูว่าต้องมีไฟล์อยู่
Renew SSL
เราจะทำการ renew ssl ด้วยคำสั่ง
/root/.acme.sh/acme.sh --force --renew --home /etc/letsencrypt --domain domain.com --webroot /var/www/ghost/system/nginx-root --reloadcmd "nginx -s reload" --accountemail domain@mail.com
- ให้แก้คำ
domain.com
เป็นโดเมนของเราเอง - ให้แก้คำ
domain@mail.com
เป็นอีเมลของเราเอง
มันจะได้ข้อความประมาณนี้ออกมา
7NNiSrriomqVNYWvtgJShk5+6RKcKmZIMmx5K96miTkOyaSElGVTQAEFiJbmfWWH
3Ewr3xUKJ+coDgI9XHTSWrAaU5DIIg9OmUoF8+pfesJEZoSNKFJLWAwO5FbjC/ND
QwGNTCswNqBwJNSul1nnB3PfWDHS8R9Cv297WXCoz8prmIm0CZl0c+E4k1pkZGlg
meU9oeEQPJkXHs43FxjrN6znMxcjcZZHWWCVK9JTmj0Zgkd0LF3o1N96+C1tEqwK
PoppZ+5ek1gfaDBE9z5Ybg4nlPHR
-----END CERTIFICATE-----
[Sat Nov 30 08:43:00 UTC 2019] Your cert is in /etc/letsencrypt/domain.com/domain.com.cer
[Sat Nov 30 08:43:00 UTC 2019] Your cert key is in /etc/letsencrypt/domain.com/domain.com.key
[Sat Nov 30 08:43:00 UTC 2019] The intermediate CA cert is in /etc/letsencrypt/domain.com/ca.cer
[Sat Nov 30 08:43:00 UTC 2019] And the full chain certs is there: /etc/letsencrypt/domain.com/fullchain.cer
[Sat Nov 30 08:43:00 UTC 2019] Run reload cmd: nginx -s reload
[Sat Nov 30 08:43:00 UTC 2019] Reload success
ถือว่าสำเร็จแล้วสำหรับการ Renew SSL ของ let's encrypt
ทำ Auto Renew
เมื่อ renew ได้แล้วก็มาแก้ไข Crontab ของเดิมจาก /etc/letsencrypt/acme.sh
เป็น /root/.acme.sh/acme.sh
โดยใช้คำสั่ง crontab -e
แล้วลอง crontab -l
ดูผลลัพธ์
crontab -l
2 0 * * * /root/.acme.sh/acme.sh --cron --home "/etc/letsencrypt" > /dev/null
เพียงเท่านี้ก็ไม่ต้องมากังวลเรื่อง ssl หมดอายุแล้ว...
Thanks: https://www.digitalocean.com/community/questions/lets-encrypt-ssl-no-renewals-were-attempted?answer=56026