幫 Ubuntu 系統的 VPS 網站申請 Let's Encrypt 免費的 SSL 證書

Let's Encrypt 是最近很熱門的 SSL Certificate(證書)供應商。有了 SSL 證書,網站就可以使用 HTTPS 加密瀏覽。那為什麼他熱門呢?在一連串 private beta 測試後,最近終於進入開放測試。簡單說就是:因為他免費!

不過千萬不要因為免費就小看他,Let's Encrypt 是由 EFF、Mozilla、Cisco、Akamai、IdenTrust、史丹佛法學院和密西根大學等資助網際網路安全研究組織(Internet Security Research Group )所創立的認證專案,主要的業務是提供免費的 SSL 證書,讓各網站可以使用 HTTPS 加密傳輸。

使用 https 加密瀏覽有什麼好處呢?瀏覽網站的朋友可以獲得更安全的瀏覽環境,尤其最近綁架病毒這麼恐怖,隨便點個廣告都可能會中獎;持有網站的人的好處就是網站不會被輕易的被綁票、SQL 注入搞到。(拜託高手放過本站,這台主機沒什麼內容......)那為什麼之前不用?因為除自己簽發的以外,買 SSL 憑證是要錢的呀。XD

部屬 SSL 主機環境:
廢話說完了,簡介一下這台主機使用的環境:
  • 主機是用很便宜的 Banwagon VPS,安裝 ubuntu 14.04 lts 作業系統。
  • 工作環境是採用 OneinStack 一鍵安裝 LNMP,PHP 版本:7.0,Nginx 版本 1.9.9,MySQL:5.6.x
所以如果你的 VPS 主機也是使用 Ubuntu 系統,環境又跟我差不多的話,那照著做很快就搞定了~這邊要注意一下 Nginx 的版本要 1.95 或以上,PHP 和 MySQL 倒是無所謂。
接下來就開始動手做吧!

一、安裝 Let's Encrypt 套件

網路上有人寫好不用安裝 Git 的方法,不過我覺得還是安裝一下以後更新或著有麼變動比較方便,用 SSH client 登入你的主機後輸入:

apt-get update 
apt-get install -y git
git clone https://github.com/letsencrypt/letsencrypt

安裝好以後就可以輸入參數,正式開始取得證書。

cd letsencrypt
sudo -s
service nginx stop
./letsencrypt-auto certonly --email Email信箱 -d 虛擬網站1 -d 虛擬網站2 --webroot -w 網站目錄 --agree-tos

其中第三行要替換得就是你的「Email信箱」(雖然他不會寄信給你驗證,不過還是填真的吧!)、虛擬網站(virtualhost),有多個虛擬網站就用「-d 虛擬網站來分開」,和你的「網站目錄」原始位置。

虛擬網站那邊不管有幾個都要一個、一個加,他不支援通配符號如:*.kreen.org,最後「--agree-tos」是跳過使用者協議,反正我想除了個別有興趣的,應該不會有人真的去翻來看。XD

以我自己為例子:

./letsencrypt-auto certonly --email mail@kreen.org -d kreen.org -d www.kreen.org --webroot -w /root/wwwroot/kreen.org/ --agree-tos

安裝成功結果會如下圖:

ubuntu-lnmp-lets-encrypt-ssl1.jpg

成功以後 Let's Encrypt 生成的免費 SSL 存根證書會保存在:/etc/letsencrypt/live/虛擬網站,並會生成四個文件:

ubuntu-lnmp-lets-encrypt-ssl2.jpg

二、調整 Nginx 的設定

接下來要調整 Nginx 的設定文件,讓 Nginx 知道你的 SSL 存根證書在哪裡,用 vim 打開 Nginx 的設定檔:

vim /usr/local/nginx/conf/vhost/網域.conf

然後在裡面添加下面 erver 下面三行就行了:

erver {
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/kreen.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/kreen.org/privkey.pem;

接著在重新啟動 Nginx 就大功告成了~

service nginx restart

如果成功的話,用瀏覽器打開網頁就可以看到網址前面的小綠鎖了:

ubuntu-lnmp-lets-encrypt-ssl3.jpg

三、證書的使用期限

Let's Encrypt 免費 SSL 證書有效期是 90 天,也就是每三個月你就得續簽一次。續簽的時候,並不需要重新來一次,只要連到 VPS 主機,把以下參數在給一次即可:

cd letsencrypt
./letsencrypt-auto certonly --email mail@kreen.org -d kreen.org -d www.kreen.org --webroot -w /root/wwwroot/kreen.org/ --agree-tos
我參考的是免費資源部落的網頁,他有教怎麼使用 cron 定時去做,就不需要自己手動了。不過我測試了一下都會出現:Error: The server could not connect to the client for DV。

搞了半天才發現是使用 Cloudflare 這家免費 cdn 造成的(網路上也有人反應),在沒別家免費 CDN 支援 SSL 下,我只好自己到 Cloudflare 網站手動暫停快取,再連上自己主機複製貼上指令碼更新了。有更好的辦法歡迎告訴我~

參考網址:

 

You may also like...

Top