免安裝程式 3 種方式在 Windows 把 PFX 檔案轉成 CRT & KEY 檔案

客人自購網站 SSL 憑證,只有得到一個 pfx 檔案和一組密碼,要安裝到主機上,權限很低的虛擬主機(shared hosting)只有給一個控制介面,設定 SSL 證書的地方卻有三個檔案上傳欄位:
– 私密金鑰 (*.key)
– 證書 (*.crt)
– CA 證書 (*-ca.crt)

這牽涉的多方立場,大概是這樣:
甲方: 上面還有個國外總公司,憑證是總公司跟憑證認證機構(CA)買的,不是其他的台灣經銷商或二房東。其他的東西我們也不能決定,反正裝上就是了。
乙方: 客人自己有準備 SSL 憑證,不用再想說怎麼請款,太好了,反正裝上就是了。
憑證機構: 反正我們沒賣主機,憑證買回去不會裝,是貴單位的事。
主機商: 我們也有賣 SSL 憑證,不跟他買就算了,還拿別家的來問? 這是在考驗客服的服務熱忱?
丙方(我): 那家非常貴,我也沒買過,不知道原廠是不是有提供其他種格式,讓虛擬主機介面可以直接安裝?

憑證隔天就要到期了,但要往上溝通,過程肯定曠日廢時,一定要趕快換上,
只好做義工,研究看看要怎麼如何在自己的 Windows 電腦上幫 PFX 轉檔? 做個筆記順便測試關鍵字。

使用 OPENSSL 把 PFX 轉成 CRT & KEY

網路上找教學,10 篇有 10 篇就是用了幾行 openssl 指令,直接在 Windows 貼 opensl 指令只會得到「openssl 不是內部或外部命令、可執行的程式或批次檔。」
這在 Linux 環境很好解決,但在 Windows 又很痛苦,要在版面八百年沒更新的網站先下載 OpenSSL 的 msi 安裝檔,裝完之後再到傳統控制台>系統進階設定>設定環境變數弄老半天;不然就是要把 cmd 用管理員模式開啟,透過某些指令安裝 openssl。OpenSSL 還有很多功能,裝起來只用來轉檔似乎大材小用,後來整理出一個比較不用這麼麻煩的方法。

1.如果 Windows 個人電腦有安裝 Git 的,在 C:Program FilesGitusrbin 資料夾內應該會找到一支 openssl.exe 程式,本文的免安裝就是建立在別的程式已經裝過的前提下…
2.打開電腦的 Terminal 工具,例如 cmd 或 pwsh
3.直接用剛剛 git 資料夾裡面的 openssl 程式來執行,產生 key 檔案
"C:Program FilesGitusrbinopenssl.exe" pkcs12 -in file.pfx -nocerts -out 2022112.key
再用剛剛的結果產生真正要上傳上去的 key 檔案 "C:Program FilesGitusrbinopenssl.exe" rsa -in 2022112.key -out 2022112key.key

4.產生 CRT 檔案
"C:Program FilesGitusrbinopenssl.exe" pkcs12 -in file.pfx -clcerts -nokeys -out 2022112.crt

5.產生 CA-bundle
"C:Program FilesGitusrbinopenssl.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

所有指令都跟上面一樣,實測是可以正常使用的。

就是要自己安裝 Win32/Win64 OpenSSL

如果不想裝 git,還是可以從剛剛提到的那個網站Download Win32/Win64 OpenSSL 去下載,然後使用上面的指令完成操作。
1.下載網頁上的 Win64 OpenSSL EXE 之後,完成安裝步驟。
2.依照預設安裝路徑,在 C:Program FilesOpenSSL-Win64bin 應該可以找到 openssl.exe。
3.打開電腦的 Terminal 工具,例如 cmd 或 pwsh。
4.把 openssl.exe 拖曳到 cmd 視窗內,會自動帶入路徑。
5.到這邊就跟上面的步驟一樣了,把其他指令繼續輸入完,就可以得到 CRT & KEY 檔案。

拖曳程式到 Terminal 得到路徑,這操作方式不只 MacOS 能用,在 Windows 也能用,不用想說還要按右鍵>內容>安全性>物件名稱什麼的。

如果真的有很喜歡改 Windows 系統變數,不想每次執行時就要找 openssl.exe 放在哪裡的,可以參考 如何在Window上安裝 OpenSSL? – 郭仕杰 CJ Kuo,將 C:Program FilesOpenSSL-Win64binopenssl.cfg 加到環境變數的 Path 中。

用線上轉換工具

一些 SSL 憑證檔格式線上轉換工具,都會提醒說轉換過程中會有私鑰留在外部主機的情況,建議還是在自己的設備上操作,不過還是放幾個上來。

網路中文 – SSL檔案格式轉換器
現在格式選 pfx,目標格式選 pem,會得到一個壓縮檔,裡面一樣有 key, crt 之類的,而不是單一個 pem 檔案。

SSL 更新完畢後可以用 Qualys SSL Server Test 掃一下,以免有哪個中繼憑證或 chain 有問題,有些電腦瀏覽器或網站掃描軟體會出現奇怪的訊息。

Tags: #ssl
分類: 網頁設計
留言:

近期熱門 Hot Posts