免安裝程式 3 種方式在 Windows 把 PFX 檔案轉成 CRT & KEY 檔案
客人自購網站 SSL 憑證,只有得到一個 pfx 檔案和一組密碼,要安裝到主機上,權限很低的虛擬主機(share hosting)只有給一個控制介面,設定 SSL 證書的地方卻有三個檔案上傳欄位:
– 私密金鑰 (*.key)
– 證書 (*.crt)
– CA 證書 (*-ca.crt)
憑證是跟憑證認證機構(CA)買的,不是其他經銷商或二房東,因為非常貴,我也沒買過,操作介面不知道長怎樣,不知道是不是有提供那麼多種格式,但反正人家沒賣主機,不會裝肯定是貴單位的事。
主機商有賣憑證,有人不跟他買,還拿別家的來問,考驗客服的服務熱忱,
溝通過程肯定曠日廢時,但憑證隔天就要到期了,一定要趕快換上,
只好做義工,研究看看要怎麼如何在自己的 Windows 電腦上幫 PFX 轉檔? 做個筆記順便測試關鍵字。
使用 OPENSSL 把 PFX 轉成 CRT & KEY
網路上找教學,10 篇有 10 篇就是用了幾行 openssl 指令,Linux 環境很好解決,但在 Windows 又很痛苦,感覺要在版面八百年沒更新的網站先下載 OpenSSL 的 msi 安裝檔,裝完之後再到傳統控制台>系統進階設定>設定環境變數弄老半天;不然就是要把 cmd 用管理員模式開啟,透過某些指令安裝 openssl,不然直接貼指令只會得到「openssl 不是內部或外部命令、可執行的程式或批次檔。」
OpenSSL 還有很多功能,裝起來只用來轉檔似乎大材小用,後來整理出一個比較不用這麼麻煩的方法。
1.如果有安裝 Git 的,在 C:\Program Files\Git\usr\bin\
資料夾內應該會找到一支 openssl.exe 程式,本文的免安裝就是建立在別的程式已經裝過的前提下…
2.打開 cmd 或 pwsh
3.直接用剛剛 git 資料夾裡面的 openssl 程式來執行,產生 key 檔案
"C:\Program Files\Git\usr\bin\openssl.exe" pkcs12 -in file.pfx -nocerts -out 2022112.key
再用剛剛的結果產生真正要上傳上去的 key 檔案 "C:\Program Files\Git\usr\bin\openssl.exe" rsa -in 2022112.key -out 2022112key.key
4.產生 CRT 檔案
"C:\Program Files\Git\usr\bin\openssl.exe" pkcs12 -in file.pfx -clcerts -nokeys -out 2022112.crt
5.產生 CA-bundle
"C:\Program Files\Git\usr\bin\openssl.exe" pkcs12 -in file.pfx -nokeys -nodes -cacerts -out 2022112-ca-bundle.crt
中間會用到的相關參數可以參考保哥的教學 如何在收到 PFX 或 CER 憑證檔之後使用 OpenSSL 進行常見的格式轉換。
產生完,上傳到主機上,指定使用新上傳的憑證,
從瀏覽器和檢測工具確定憑證日期有延長,打完收工。
使用 WSL OPENSSL
如果電腦有裝過 WSL(Windows Subsystem for Linux)的,可以直接從 Windows 上執行 Linux 的某些指令。
利用這點來實現免安裝、也跳脫傳統控制台>系統進階設定>設定環境變數的痛苦過程。
把 openssl 指令直接替換成 wsl openssl,例如:
wsl openssl pkcs12 -in file.pfx -nokeys -nodes -cacerts -out 2022112-ca-bundle.crt
所有指令都跟上面一樣,實測是可以正常使用的。
用線上轉換工具
一些 SSL 憑證檔格式線上轉換工具,都會提醒說轉換過程中會有私鑰留在外部主機的情況,建議還是在自己的設備上操作,不過還是放幾個上來。
網路中文 – SSL檔案格式轉換器
現在格式選 pfx,目標格式選 pem,會得到一個壓縮檔,裡面一樣有 key, crt 之類的,而不是單一個 pem 檔案。