1. 首頁
  2. »
  3. 網站架設
  4. »
  5. 主機
  6. »
  7. Ubuntu 系統的 VPS 網站安裝Let’s Encrypt免費SSL憑證教學:Docker和Nginx配置SSL證書

Ubuntu 系統的 VPS 網站安裝Let’s Encrypt免費SSL憑證教學:Docker和Nginx配置SSL證書

2020/05/11

梅問題-Ubuntu 系統的 VPS 網站安裝Let’s Encrypt免費SSL憑證教學:Docker和Nginx配置SSL證書
  自從Google將網站的SSL安全憑證,列為搜尋排名的條件後,現在只要是租用虛擬主機,內建就會提供免費的SSL安全憑證,且還會自動更新憑證,相當的方便,如此一來建立再多的子域,也不用擔心憑證購買與更新的問題,而這也是梅干喜愛用虛擬主機的原因,雖然虛擬主機很方便,但所有的資源都是共享的,因此在效能上就顯得比較差一點,所以梅干就會選用VPS或雲端主機,由於VPS主機則是依自己的需求自行安裝,因此內建沒有cPanel,所以自然也有免費的SSL憑證可用,就得自行購買SSL憑證或是使用免費的SSL憑證。

  但免費版的SSL證書只有三個月,因此每三個月就得手動更新,實在有些不便,雖然可設定與透過指令方式,進行證書的換發,但每當看到教學文章,就讓梅干有點卻步,因為過程實在有些繁索,因此梅干在上周花了點時間,終於成功的在VPS的主機中,安裝Let’s Encrypt並取得證書,同時也順利的將憑證安裝完畢,以及啟用排程,每三個月就會自動申請憑證與更新,因此有在使用VPS主機的朋友,不妨也可參考看看囉!


主機環境
1.系統:Ubuntu 18.04 x86_64
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
梅問題-Ubuntu 系統的 VPS 網站安裝Let’s Encrypt免費SSL憑證教學:Docker和Nginx配置SSL證書
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
梅問題-Ubuntu 系統的 VPS 網站安裝Let’s Encrypt免費SSL憑證教學:Docker和Nginx配置SSL證書
Step3
當憑證安裝成功時,就會看到下方的訊息,同時告知證書的到期日,以及在憑證到期的5~7內,可再重新發送新的憑證。
梅問題-Ubuntu 系統的 VPS 網站安裝Let’s Encrypt免費SSL憑證教學:Docker和Nginx配置SSL證書
Step4
當憑證發送完成時,會在/etc/letsencrypt/ive/{域名}/目錄下,分別會看到四個pem檔,但只需引用fullchain.pemprivkey.pem檔就可以了。
1.cert.pem 服務端證書
2.chain.pem 瀏覽器需要的證書
3.fullchain.pem 包含cert.pem與chain.pem證書
4.privkey.pem 私有金鑰
梅問題-Ubuntu 系統的 VPS 網站安裝Let’s Encrypt免費SSL憑證教學:Docker和Nginx配置SSL證書
Let’s Encrypt SSL 憑證設定:
Step5
接著開啟docker-compose.yml,在nginxvolumes地方,將容器加入二個pem的目錄位置。
– /etc/letsencrypt/live/{域名}/fullchain.pem:/etc/letsencrypt/live/{域名}/fullchain.pem
– /etc/letsencrypt/live/{域名}/privkey.pem:/etc/letsencrypt/live/{域名}/privkey.pem
梅問題-Ubuntu 系統的 VPS 網站安裝Let’s Encrypt免費SSL憑證教學:Docker和Nginx配置SSL證書
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;
梅問題-Ubuntu 系統的 VPS 網站安裝Let’s Encrypt免費SSL憑證教學:Docker和Nginx配置SSL證書
Step7
接著,重啟docker-compose,順利的話,就會看到鎖頭啦!
梅問題-Ubuntu 系統的 VPS 網站安裝Let’s Encrypt免費SSL憑證教學:Docker和Nginx配置SSL證書
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
梅問題-Ubuntu 系統的 VPS 網站安裝Let’s Encrypt免費SSL憑證教學:Docker和Nginx配置SSL證書
Step9
上傳到主機的根目錄中。
梅問題-Ubuntu 系統的 VPS 網站安裝Let’s Encrypt免費SSL憑證教學:Docker和Nginx配置SSL證書
Step10
接著輸入crontab -e,設定排程「30 2 * * 0 /root/renew.sh」,而排程的時間分別為「分」、「時」、「日」、「月」、「星期」,所以就會在每周日,半夜2:30進行憑證重發,但憑證若尚未到期,就不會更新,都設定好後,就將它儲存並退出,這樣就大功告成囉!
梅問題-Ubuntu 系統的 VPS 網站安裝Let’s Encrypt免費SSL憑證教學:Docker和Nginx配置SSL證書