在 Windows 申請 Let’s Encrypt wildcard 憑證

  上回抱著嘗試的心態在 SSL For Free 申請 Wildcard 憑證 (*.abc.com),沒想到申請成功了,原本還以為 Let’s Encrypt 只能針對個別網址進行申請。最近由於憑證快滿三個月,便準備再進行申請,卻發現 SSL For Free 被 ZeroSSL 買下來後,針對 Wildcard 憑證的申請,유료로만 구매할 수 있기 때문에,그래서 이 플랫폼의 서비스를 포기할 수밖에 없었다。

 

  인터넷에서 정보를 검색한 후,대부분의 글에서는 Let’s Encrypt에서 추천하는 Certbot 도구를 사용하는 것을 권장했다,인증서를 신청할 수 있을 뿐만 아니라,자동으로 갱신도 가능하다。하지만 실제로 사용해본 결과,URL 인증 부분에서 몇 가지 문제가 발생하여 원활하게 진행할 수 없었다,그래서 포기할 수밖에 없었다。

 

  之後試著搜尋可以像 SSL For Free 那樣線上申請憑證的網站最後找到 Get HTTPS for free! 這個不太起眼但很棒的網站!Get HTTPS for free! 是個 open source 的網站網頁的頁面很簡陋但是說明很詳細試著依照上面的步驟進行可惜在步驟 3. 要透過 openssl 驗證時網頁說明的指令在 Windows 環境似乎無法運行因此再度卡關

 

  好在後來在 Cook Wu’s Murmurs 的文章 得知有網友針對 Get HTTPS for free! 寫了一個可以在 Windows 運行的超方便協力工具GetHttpsForFree-UI只要把 openssl 的位置在 GetHttpsForFree-UI 設定好後面搭配網頁的步驟一步一步進行幾乎都只要複製貼上就好不需用到指令

 

  下面為以「Get HTTPS for free!」+「openssl」+「GetHttpsForFree-UI」申請「Let’s Encrypt wildcard 憑證」的說明

※ 如果是要續簽憑證把前一次的 account.keydomain.key 及 openssl.cnf 放到指定位置並設定好 OpenSSL Path 及 Working Path先做步驟 10.,接著從 12. 依序做下去即可

 

1. 下載 openssl for windows並解壓縮

2. 下載 GetHttpsForFree-UI.exe

3. 執行 GetHttpsForFree-UI.exe在 OpenSSL Path 設定 openssl.exe 的位置

4. 在 Working Path 設定一個待會要存放「憑證」及「金鑰」的目錄

5. Account key 與 Domain key 的檔案名稱可以使用預設值

6. openssl.cnf 檔可以在 openssl\share 目錄底下找到也可以點選「Download an OpenSSL.cnf template file」下載範本檔我這邊選擇後者下載範本檔後存到 Working Path 的目錄

7. 點選「Copy required entry to clipboard」此時剪貼簿會含有 openssl.cnf 所需的參數接者打開剛剛的 openssl.cnf在最後一行「貼上」

 

8. 修改剛剛貼上的 subjectAltName 參數將後面的網址改成 *.abc.com

 

9. 回 GetHttpsForFree-UI.exe 工具切換到「Step 1 and 2」頁面按下「Create Account Key」此時會產生 Let’s Encrypt 所需的郵件帳號的 Public key 內容並自動複製到剪貼簿另外 Working Path 資料夾會產生一個 account.key 的私鑰檔

 

10. 到「Get HTTPS for free!」網站於 Step 1 輸入 Email 及貼上剛剛的 Public key並按下「Validate Account Info」

 

11. 回 GetHttpsForFree-UI.exe 工具按下「Create Domain Key and Request」此時會產生 CSR 內容並自動複製到剪貼簿另外 Working Path 資料夾會產生一個 domain.key 的私鑰檔

 

12. 到「Get HTTPS for free!」網站於 Step 2 貼上剛剛複製的 CSR 內容並按下「Validate CSR」

 

13. 同樣在「Get HTTPS for free!」網站將 Step 3「Accept the Let’s Encrypt terms and condition」下的指令複製起來

 

14. 回 GetHttpsForFree-UI.exe 工具切換到「Step 3 and 4」頁面貼到「Data」欄位並點擊「Excute OpenSSL」此時會自動將「Result」欄位的資料複製到剪貼簿

 

15. 再回到「Get HTTPS for free!」網站將剛剛的值貼到指令下方的欄位並按下「Accept Terms」

 

16. 重複上面步驟完成「Get HTTPS for free!」網站上 Step 3 的其他欄位

 

17. 在「Get HTTPS for free!」網站的 Step 4,重複前面步驟在產生驗證值後按下「Load Challenges」

 

18. 接著下方會產生要在 DNS Server 新增的 TXT 資訊完成新增後點選「I can see the TXT record for abc.com」

 

19. 將「Get HTTPS for free!」網站的 Step 4 剩下的指令欄位都比照前述步驟貼到 GetHttpsForFree-UI.exe 執行完再貼回網站並按下對應按鈕

 

20. 在「Get HTTPS for free!」網站的 Step 5 (最後一步),複製「Signed Certificate Chain」的內容

 

21. 回 GetHttpsForFree-UI.exe 工具,‘Step 5’ 페이지로 전환하세요,‘Signed Certificate’에 방금 복사한 값을 붙여넣으세요,그리고 아래의 ‘Create Certificate’를 누르세요,그러면 Working Path 폴더에 .crt 서버 인증서 파일이 생성됩니다。

 

여기까지가 Let’s Encrypt 와일드카드 인증서 신청 완료입니다,GetHttpsForFree-UI.exe 도구가 정말 편리하다고 깊이 느꼈습니다,제작자에게 매우 감사드립니다,또한 제작자가 강의 영상도 녹화하였습니다,사실 영상을 보고,就會大概知道怎麼進行了建議可以先看過一遍

 

【番外篇】

  如果要將 crt 伺服器憑證檔轉成 PFX 檔可以參考 保哥的這篇裡面有很詳盡的說明

 

◎ 透過下面指令將 「crt 伺服器憑證檔」與「domain.key 私鑰」合併成 PFX 檔

openssl pkcs12 -in abc.com.crt -inkey domain.key -export -out abc.com.pfx -password pass:1234
# 1234 是匯入密碼,請自行修改。

 

【2020/08/04 補充】
上述程序所產生的檔案說明如下

【openssl.cnf】
# 讓 OpenSSL 產生憑證的範本檔。

【account.key】
# Let's Encrypt 郵件帳號的私鑰檔。

===============================

【domain.key】
# 產生 CSR 時的私鑰檔。

【abc.com_cert.crt】
# 主要憑證檔。

【abc.com_chain.crt】
# 根憑證 (root)。

【abc.com.pfx】
# 使用 openssl 將「abc.com_cert.crt (主憑證)」與
# 「domain.key (私鑰)」合併轉換而成。

 

[參考連結]

7 則留言

  1. MercyTree says:

    정말 좋은 그림과 글로 된 튜토리얼,정말 큰 도움이 되었어요。

    LINE API는 인증서 발급 기관을 선택합니다,Let's Encrypt의 다용도 도메인 인증서가 너무
    정말 잘 사용돼요~

    항상 아낌없이 나눠주셔서 감사합니다、이타적인 공유!
    감사합니다!

    1. Anson says:

      도움이 되어 기뻐요,천만에요~ :)

  2. 에릭 says:

    공유해 주셔서 감사합니다!

    1. Anson says:

      천만에요 🙂

  3. tenrivers says:

    이 방법으로 신청하면,3개월마다 한 번씩 갱신해야 하나요??
    좀 귀찮네요…

    1. Anson says:

      맞아요,수동으로 연장해야 해요。
      자동으로 하고 싶다면,공식 추천 Certbot 프로그램을 고려해 볼 수 있어요。

댓글 남기기

이메일 주소는 게시되지 않습니다. 필수 항목 표시 *

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터 처리 방법 알아보기.