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

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

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

憑證隔天就要到期了,但要往上溝通,過程肯定曠日廢時,一定要趕快換上,不然網站憑證錯誤的畫面明天就會被截圖出現在 FB 粉專留言,或是各種工程師社團&聊天群組。

只好做義工,研究看看要怎麼如何在自己的 Windows 電腦上幫 PFX 轉檔? 做個筆記順便測試關鍵字。

使用 OPENSSL 把 PFX 轉成 CRT & KEY

網路上找教學,10 篇有 10 篇就是用了幾行 openssl 指令就打完收工,但正常情況直接在 Windows 貼 opensl 指令只會得到「openssl 不是內部或外部命令、可執行的程式或批次檔。」

這些指令在 Linux 環境很好解決,但在 Windows 又很痛苦,要在版面八百年沒更新的網站先下載 OpenSSL 的 msi 安裝檔,裝完之後再到傳統控制台>系統進階設定>設定環境變數弄老半天;不然就是要把 cmd 用管理員模式開啟,透過某些指令安裝 openssl。OpenSSL 還有很多功能,裝起來只用來轉檔似乎大材小用,後來整理出一個比較不用這麼麻煩的方法。

1.如果 Windows 個人電腦有安裝 Git 的,在 C:Program Files\Git\usr\bin 資料夾內應該會找到一支 openssl.exe 程式,本文的免安裝就是建立在別的程式已經裝過的前提下…

2.打開電腦的 Terminal 工具,例如 cmd (命令提示字元)或 pwsh

3.直接用剛剛 git 資料夾裡面的 openssl 程式,來產生 key 檔案(比較精準的說法是從 pfx 檔案中取出加密私鑰)
"C:\Program Files\Git\usr\bin\openssl.exe" pkcs12 -in file.pfx -nocerts -out 2022112pk.key

再用剛剛產出的檔案,產生真正要上傳上去的 key 檔案(比較精準的說法是解密第一步提取的加密私鑰,轉換成純文本的 RSA 私鑰格式):
"C:\Program Files\Git\usr\bin\openssl.exe" rsa -in 2022112pk.key -out 2022112key.key

4.從 PFX 產生 CRT 檔案
"C:\Program Files\Git\usr\bin\openssl.exe" pkcs12 -in file.pfx -clcerts -nokeys -out 2022112.crt

5.從 PFX 產生 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 進行常見的格式轉換

產生完,上傳到主機提供的 SSL 設定介面上,指定使用剛剛新上傳的憑證,
從瀏覽器和各種 SSL 檢測工具確定憑證日期有延長,打完收工。

使用 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

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

ps.Win10/Win11 的家庭版 Home 版本也能跑 wsl,頂多有些進階功能不能用,但不影響本次的用途。

反而是一些電腦 CPU 不支援虛擬化技術(Virtualization),或是在主機板 BIOS 中被停用了,安裝 WSL 的時候應該會出現各種錯誤。

  • 如何檢查 CPU 是否支援虛擬化技術(每一家 CPU 用的名詞各有差異)
  • 如何檢查主機板 BIOS 的虛擬化技術是否被停用(各家/各種型號的主機板的設定方式各有差異)
  • 安裝 WSL 碰到的各種疑難雜症

每一個都是很難一兩句話講完的題目,如果 WSL 裝不起來,可以從以上三個思路去找解答。

我就是要自己安裝 Win32/Win64 OpenSSL

第三種方法,如果不想裝 git,也不想碰 wsl,還是可以從剛剛提到的那個網站Download Win32/Win64 OpenSSL 去下載,然後使用上面的指令完成操作。
1.下載網頁上的 Win64 OpenSSL EXE 之後,完成安裝步驟。
2.依照預設安裝路徑,在 C:\Program Files\OpenSSL-Win64\bin 裡面應該可以找到 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 Files\OpenSSL-Win64\bin\openssl.cfg 加到環境變數的 Path 中。

用線上轉換工具

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

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

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

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

Previous

買二手 iPhone 與 iPad 碰到 MDM 鎖定的機子該如何解鎖?

Next

用 AI 整理會議記錄? 現代問題要用現代手段

相關推薦文章

近期熱門 Hot Posts

    ✏️

    Contact Me

    E-Mail

    Open Email Client

    LINE 私訊
    此為 LINE 官方帳號,僅用於連絡,不會群發訊息

    加 LINE 好友

    FB Messenger/Instagram 私訊

    FB Messenger IG 小盒子

    Telegram 私訊

    傳訊息到 Telegram