(圖片來源)
最近協助資訊種子官網安裝 SSL 憑證(綠色鎖終於回來了),打算紀錄一下操作流程。
先簡單說明一下資種官網的架構:
Server: Ubuntu 16.10
Web: Sails.js v0.11.5
原本打算用 certbot 取得免費憑證,但在機器上一直無法順利運行,後來就乾脆到 GoDaddy 購買憑證及安裝,以下將會介紹購買及安裝流程。
一、購買 SSL 憑證
首先第一步是購買 SSL 憑證,可參考官網資料,依據自己的需求選擇,我自己是選擇最左邊的方案。
接下來就會是一系列的購物車流程,這邊就不另行說明。
二、要求及驗證 SSL 憑證
購買完成後,接下來步驟是要求 SSL 憑證,可參考官網要求 SSL 憑證說明頁面,因為我購買的是標準 SSL,而且網域是在其他地方,符合第二項情況,
接著可以按照說明,把 CSR 及 private key 下載並存起來。
再來,GoDaddy 為了驗證你對申請網域是否有控制權限,會寄一封操作驗證信到你的信箱。
有兩種驗證方式:
我自己是採用 DNS 紀錄,更新後即可完成驗證。
三、下載憑證及安裝
接下來到 SSL 憑證頁面,點選購買網域的憑證。
然後根據伺服器類型下載
下載完成並解壓縮後,會獲得三個檔案。
資訊種子官網使用的是 sails.js,並且無使用任何反向代理。首先我們先把以下三個檔案傳上去到主機,並在專案新建資料夾:config/ssl/
:
- gd_bundle-g2-g1.crt
- ee05f2ba665abd23.crt (前面可能是別斷隨機亂數)
- generated-private-key.txt (步驟二下載的 private key)
備註:我有再另行更換名字,如下對應表提供參考
原檔名 | 新檔名 |
---|---|
gd_bundle-g2-g1.crt | gd-bundle.crt |
ee05f2ba665abd23.crt | ssl.crt |
ssl.key | generated-private-key.txt |
接下來到專案資料夾的 config/env/production.js
,port 443 的地方加上 ssl,修改如下範例程式碼,重新啟動後就完成了。
/***************************************************************************
* Set the port in the production environment to 80 *
***************************************************************************/
port: 443,
ssl: {
ca: require('fs').readFileSync(require('path').resolve(__dirname,'../ssl/gd-bundle.crt'), 'utf8'),
key: require('fs').readFileSync(require('path').resolve(__dirname,'../ssl/ssl.key'), 'utf8'),
cert: require('fs').readFileSync(require('path').resolve(__dirname,'../ssl/ssl.crt'), 'utf8')
},
policies: {
'*': 'isHTTPS'
}
小結
在工作上,公司有 DevOps 處理完 SSL 的相關事務,這算是我第一次自己實際設定,過程中研究了蠻多 SSL 相關資料,設定成功後覺得非常開心,希望能幫助到有相同需求的人,如果文章內容有任何錯誤,再麻煩告知,謝謝!
如果覺得文章對你有幫助,也可以透過贊助一杯咖啡給予我鼓勵唷