使用certbot與let’s encrypt替網站建立SSL憑證(pem轉crt&key)

前言:

大部分的網站都會介紹「SSL For Free 免費 SSL 憑證申請」教學如何為自己的網站建立憑證。但也許是政策改變,此方法申請的憑證並不是永久免費的,申請完後會得到由 ZeroSSL 所頒發的 SSL簽證90天,一個會員帳號可以更新三次(也就是90*3=180天的免費額度)。如果使用完了,就必須訂閱他們的付費方案以繼續更新SSL憑證。

免費版的只有三次 90天的SSL憑證可以使用

但明明 Let’s encrypt 就主打他是免費的憑證頒發機構,今天決定不靠第三方的任何人,自己手動來申請/新增SSL憑證!


以下正文開始

流程

  1. 使用 Certbot 命令列工具建立免費的 TLS/SSL 頂層網域憑證匯出.pem憑證檔
  2. 將憑證檔與私鑰匯出為PFX格式
  3. 將PFX格式分別匯出成我們要的網站憑證(.Crt)、CA憑證(.Crt)、私鑰檔案(.Key)
  4. 將以上檔案匯入自己的網站

大功告成!

使用 Certbot 命令列工具建立免費的 TLS/SSL 頂層網域憑證

這裡參考了The Will Will Web 保哥所寫的技術文章,步驟詳盡受益良多,基本上上述流程只要照著步驟做就不會有問題。

步驟做完後會得到四個.pem的憑證檔,在目錄的 C:\Certbot\live\my.domain.name

其中 my.domain.name 就是你的網域名稱

將憑證檔與私鑰匯出為PFX格式

這裡一樣參考了 The Will Will Web 的網站解說,PFX 憑證被要求一定要設定一組密碼,因此我們這裡匯出 PFX 憑證時直接設定密碼為123:

openssl pkcs12 -export -out "certificate_combined.pfx" -inkey "privkey.pem" -in "cert.pem" -certfile "fullchain.pem" -password pass:123

因為未知原因,我在使用git bash時只要沒有輸入紅字部分設定密碼,程序就會卡住在原地完全不動作(其他教學雖有提到不先設定密碼也沒有關係,系統會詢問你要設定什麼密碼,但此處失效因而直接加上設定)

以上指令執行完畢後,就會得到一個 certificate_combined.pfx 檔案。下一步就是從這個檔案匯出我們要的兩個憑證與一個私鑰囉!

將PFX格式分別匯出成我們要的網站憑證(.Crt)、CA憑證(.Crt)、私鑰檔案(.Key)

以下步驟都是由 石頭閒語 網站而來

從 PKCS#12 PFX 格式文件匯出 PEM 格式的根憑證/中繼憑證 (output CA certificates):

openssl pkcs12 -in certificate_combined.pfx -nokeys -cacerts -nodes -password pass:123 -out CA.crt

從 PFX 格式文件匯出 PEM 格式的網站憑證 (output client certificates):

openssl pkcs12 -in certificate_combined.pfx -nokeys -clcerts -nodes -password pass:123 -out my.domain.name.crt

從 PFX 格式文件匯出 PEM 格式的網站私鑰 (output client private key):

openssl pkcs12 -in certificate_combined.pfx -nocerts -nodes -password pass:123 -out my.domain.name.key

另外補充在執行上述步驟時,使用git bash 未輸入綠色(在匯出PFX時使用的密碼)會使系統無止盡的執行中,並且當機,屢試不爽。於是與 石頭閒語 不同的是,直接在匯出時將檔案內容打錯。

經過以上步驟就可以從let’s encrypt幫自己的網站建立SSL憑證,並匯入拉!

網路上有提到更多可以自動化簽證(因let’s encrypt雖然免費,但不支援憑證輸入網域以外的細目資訊、並90天就要重新更新簽證),大家可以再另外自行研究。至於我,覺得90天就手動更新一次已經很足夠用了,哈!

註釋:本人並不是任何資訊背景出身,如有謬誤敬請指教。此文章也只是希望在每次90天後的SSL更新有一個依據可以參考,不必再另外全部重找資料。


參考文章

https://stackoverflow.com/questions/50389883/generate-crt-key-ssl-files-from-lets-encrypt-from-scratch

https://certbot.eff.org/docs/using.html#where-are-my-certificates.

https://community.letsencrypt.org/t/how-to-get-crt-and-key-files-from-i-just-have-pem-files/7348

https://itectec.com/superuser/lets-encrypt-certbot-where-is-the-private-key/

https://stackoverflow.com/questions/13732826/convert-pem-to-crt-and-key



內容目錄