要準備非自簽憑證的 HTTPS 環境,關鍵是要準備好以下幾個項目:
- 域名 Domain Name
- SSL 憑證
- Web 伺服器
有了前兩項之後,最後的 Web 伺服器準備其實不太需要贅述的。因此本篇把重點放在前兩項。
首先是域名。條件許可的話,當然花錢買是最快的。如果想要免費取得,通常你的域名長相就會受到限制。另外,一些較熱門的免費域名服務,如 no-ip 等,因為拿它來做壞事的人也多,所以帶有這類域名的 URL 有時會被某些平台過濾掉 (案例: Facebook)。這邊推薦交通大學的 nctu.me 域名服務。只要註冊 TWID,就可以馬上免費使用。一個帳號可以註冊至多三個子域 (Ex: abc.nctu.me),每個子域下最多還可註冊 50 個再深一層的域名 (Ex: www.abc.nctu.me)。
再來是 SSL 憑證。就在幾年前,要想取得免費、又是世界公認的頂級 SSL 憑證根本就是痴人說夢。2014 年美國 ISRG 組織公開了 Let's Encrypt 計劃,希望能以免費提供頂級 SSL 憑證的方式,加速 HTTPS 取代 HTTP 的進程。此舉也帶動一些周邊的配套工具平台,例如此處要介紹的 SSLforFree。只需要在 SSLforFree 的網頁上簡單點幾下,就可以生成 SSL 憑證了。有一點要注意的是,目前 Let's Encrypt 計劃所發行的憑證,效期一律只有 3 個月。所以每 3 個月需要重新生成 (renew) 憑證。官方也有解釋此舉並不是要為難不想花錢的人,而是為了安全。
特別說明一下在 SSLforFree 上申請 SSL 憑證時,要怎麼快速地通過域名擁有權的挑戰。會有這個關卡是因為要確認「你真的是你宣稱的域名的擁有者」。否則隨便一個人都可以上去申請 google.com 或 facebook.com 的 SSL 憑證那還得了。
當你在 SSLforFree 上輸入完域名、提出憑證申請之後,會看到以下三種完成挑戰的方法。前兩個都需要真的在機器上跑服務才有辦法完成。第三種 (最右邊反白者),只需要在域名代管平台 (此例即為 nctu.me) 上新增一個 DNS TXT Record 即可完成。
選擇了第三種挑戰之後,會看到類似以下的指示:
Add the following TXT records below to the DNS server for each domain (In the Time to Live (TTL) field, enter 1):
Add TXT record with the name/host _acme-challenge.zevoidxyz.nctu.me with the value M3DD3pe_VAHmvomFXSOjsu6pDL736ObRUCIOKejoTS0
到 nctu.me 平台上照著上述指示建立 TXT Record:
按下「申請」按鈕後,大約等個幾分鐘,到 SSLforFree 網頁上按下 「Download SSL Certificate」的按鈕,就會驗證挑戰是否完成,完成的話就會引導到憑證下載頁面。
您好!
回覆刪除在下我也用了 nctu.me 來註冊免費網域 ( xxx.nctu.me )。不過在 Let's Encrypt 取得免費憑證時,總會發生錯誤的訊息
There were too many requests of a given type :: Error creating new cert :: too many certificates already issued for: nctu.me: see https://letsencrypt.org/docs/rate-limits/
該網站的說明是,不論註冊哪一個網域,例如 aa.bb.nctu.me 或是 dd.nctu.me,都會以 nctu.me 進行 Rate Limits 限制,換句話說 nctu.me 似乎超出了 Let's Encrypt 的限制。
請問這個有解嗎?
我也沒有解哩, 事實上我還是從你的留言才得知 Let's Encrypt 有管控發證的頻率. 按您提供的那篇 Rate Limits 所揭露的資訊 -- 同個 domain "每週"只能發證 20 次. 分享給其它讀友了.
刪除