現在這個講究安全性的年代,不管什麼網站都應該要有 HTTPS 連線,即便是架設在本地的測試站台也一樣。我負責的專案的測試站台都是架設在公司內部主機的 IIS 伺服器上面,然後有設定好網域指向主機的對外 IP(中間當然有防火牆啦……直接暴露公司電腦到外頭那還得了)。之前為了取得 SSL 憑證,我是參考網路上的文章到 SSL For Free 這個網站去申請的,這邊申請一次只能用三個月,到期了就要再次申請,而今天不知不覺地又到了期限到期的日子,可是我再次上去準備申請的時候卻一整個傻眼了:這個網站現在不再是無限制完全免費了,首先必須註冊帳號,然後根據你的帳號是不是付費帳號來決定你能申請多少憑證。完全免費的帳號現在只能申請 3 個憑證(而且不能使用萬用字元!),這完全不夠我們用,我們的測試站台隨便就快要十個了,而且不能使用萬用字元的話,一個一個子網域去申請也未免太累了。

幸好我沒花太多時間就找出了替代方案,而且還跟 IIS 整合得更好。

其實說穿了,SSL For Free 也只不過是一家串接了 Let’s Encrypt 的服務的公司,而 Let’s Encrypt 本來就應該是非營利機構,只是串接了他們的服務就想從中抽手續費,這真的只能騙一些冤大頭。串他們服務的介面何其之多,光是 Let’s Encrypt 列出的 ACME 客戶端 大概就有快一百個了,而我就憑直覺選了其中的 Certify The Web 來試用。

這個 Windows GUI 設計得很直覺,申請流程在概念上也跟 SSL For Free 差不多,但是更加方便得多,設定過一次之後就可做到全自動驗證(所以後續都會自動幫你更新憑證)。一個小小美中不足的是免費版也有可管理的憑證組數上限 1,不過每一組裡面都可以加入複數個網域且也可以用萬用字元,所以應該是很夠一般的用途的。

操作的步驟如下。首先按下左上角的「New Certificate」創造一組新的憑證,接下來你可以在「Select Site (optional)」裡面選取某一個已經在 IIS 裡面建立好的站台,這樣做的話可以自動加入該站台已經聯繫的網域、並且可以透過 http 模式來自動進行驗證;不過我更建議的作法是不要選站台,自己在「Add domains to certificate」裡面手動填入包含萬用字元的網域名稱,此時它會提示你說包含萬用字元的憑證只能透過 dns 模式來驗證,這倒是無所謂,設定一次就好了。

接下來按下右邊的「Authorization」標籤來設定驗證,選擇 「Challenge Type」為 dns-01。如果各位曾經用過 SSL For Free,就知道這種模式的作法是要你在網域的 DNS 設定裡面加入一個指定的 TXT 值到 _acme-challenge 裡面來進行驗證,但是各位不難想像,如果是這樣的話以後每次要重新驗證我們都得自己跑去網域業者那邊手動設定 TXT 值,這樣當然不可能做到自動重新驗證。因此,Certify the web 支援一些自動驗證的方法、可以讓我們只要設定一次以後就都不用再手動去更新了。我們在「DNS Update Method」裡面可以看到一大串它支援的方法,而這邊我以通用性很高的 acme-dns DNS API 為例作解說;它的概念很簡單,就是把 _acme-challenge 做一個轉址到軟體可以自動更新的位置之上。

選好了 acme-dns DNS API 模式之後,按下上面的「Test」按鈕,第一次因為我們還沒設定好所以一定會失敗,不過沒關係,失敗的同時也會顯示告訴我們要去網域業者那邊增加一個 _acme-challenge 的 CNAME 值(而不是 TXT)指向它指定的一長串網址(按一下可以把整串訊息複製起來),照著他說的做好了之後再按一次 Test 確定整個串接成功之後,就可以按「Request Certificate」來完整驗證和取得憑證的動作了,且以後也會自動幫你持續更新憑證!

由於 Certify The Web 是一個專門整合 IIS 的 GUI,所以申請到的憑證會自動灌到 IIS 裡面並且把對應的所有站台全部都換成新的憑證,非常方便,不像以前 SSL For Free 的憑證還要自己轉成 IIS 用的格式。推薦給大家用喔~


  1. 我在官網上沒看到精確來說到底是幾組,不過我自己試過、新增到第三組的時候就會開始問你要不要正式購買了,所以大概頂多是三四組吧。 


分享此頁至:
最後修改日期: 2021/02/05

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。