來自 certsrv 的 Microsoft Active Directory 證書服務響應
我正在嘗試在從 Microsoft Active Directory Certificate Services 生成的嵌入式系統上使用證書和私鑰。NDES 和 SCEP 目前不在範圍內,因此需要半手動。
我在https://server/certsrv的 AD CA 伺服器上使用 Microsoft Web 工具。我能夠在沒有 CSR 的情況下通過並生成響應,並使用證書導出私鑰。響應是要求我“安裝此證書”或“保存響應”的頁面。
如果我執行“安裝此證書”選項,Windows Certmgr 應用程序會顯示我已導入證書並且我擁有私鑰。然後可以將其導出為 PKCS#12 文件,該文件可以使用或轉換為 PEM。但是,如果我使用“保存響應”選項並將文件儲存為 p7b(在檢查響應文件時由 certutil 指示),然後我使用 p7b 文件導入證書,則沒有可用的私鑰。這是一致的,因為我不希望 PKCS#7 文件儲存私鑰。
我的問題:
PKCS#7 文件格式似乎不支持私鑰,OpenSSL 似乎不支持從 PKCS#7 文件中提取私鑰。有沒有辦法使用 certsrv Web 工具並獲得證書和私鑰,而無需在 Windows 中“安裝此證書”?此外,WTF 正在允許 MS 安裝我似乎無法獲得的私鑰?我查看了文件https://dakota.main.lab/certsrv/certfnsh.asp中的腳本,它們似乎使用了與“保存響應”輸出中顯示的相同的 pkcs#7 數據。
提前致謝。
丁斯代爾
當您使用 Web 註冊生成證書請求時,會使用您的瀏覽器在本地生成私鑰。證書籤名請求被發送到 CA(沒有私鑰),並在此時對其進行簽名。然後,該證書會在網頁上顯示給您,並帶有“安裝此證書”的連結。
在那個時間點,您不可能將其保存為 PKCS#12(忽略您無法右鍵點擊並選擇“另存為”的事實),因為它只是伺服器上的證書。
當您“安裝此證書”時,它會保存到您的證書儲存中,此時它與私鑰結合在一起。如果您要打開證書 MMC,您會在那裡看到此證書,它會顯示您還擁有私鑰。只有此時您才能將兩者都導出為 PKCS#12 文件。
或者,您可以使用證書 MMC 請求證書,然後將其與私鑰一起導出為 PKCS#12,但即使這樣,證書也會首先安裝在您的電腦上(以便將其與其私鑰結合起來)在你可以導出它之前。
您可以在命令行上執行類似的過程,但同樣,您需要先安裝證書,然後才能導出為 PKCS#12。
所以,我想你的問題的答案是’不,你不能。私鑰始終是本地的,必須與 CA 返回的證書結合,然後才能導出為 PKCS#12。