我需要能夠遠端匯出 Windows 伺服器上已安裝的電腦憑證以及完整的憑證鍊和私鑰。該憑證用於 IIS,我想將其用於在同一伺服器上運行的 apache 實例。
我知道如何使用 certmgr.MSC mmc 管理單元工具手動執行此操作,但如何從命令列或同一網域上的遠端電腦完成此操作?
我還知道如何僅使用 來查看憑證openssl s-client
。可以用來保存憑證和私鑰以匯入到 Java 金鑰庫檔案嗎?
通過 RDP 的 Certmgr 對於我的需要來說太慢了。我需要一個腳本解決方案。
我的環境就是全部Windows Server 2008R2。 PowerShell 遠端處理未打開,但我可以打開它。
我已經確認我無法使用PowerShell Export-PfxCertificate
,因為我的伺服器不夠新...
因此,如果我可以使用 PowerShell 取得所需憑證的指紋,我就可以將其提供給「certutil -exportpfx」命令。我已經確認這會起作用。
我如何目錄憑證儲存如「dir cert:\localmachine\my |Where-Object { $_.hasPrivateKey } | 」然後將其與指紋一起提供給 certutil 匯出?
或者,我可以先執行 dir 並告訴它只列印指紋而不是整個內容嗎?然後將其儲存到檔案中,並讀取該檔案並執行 certutil 命令?
答案1
請參閱堆疊溢位問題使用 PowerShell 從 IIS 匯出憑證。
如果答案適合您,那麼您可以使用PSRemoting
(輸入-PSSession或者調用命令) 或者執行程式。
有誰知道如何像“dir cert:\localmachine\my | Where-Object { $_.hasPrivateKey } | ”那樣指定證書存儲,然後使用指紋將其提供給 certutil 導出?
試試這個,對我有用:
Get-ChildItem -Path 'Cert:\localmachine\My' |
Where-Object { $_.hasPrivateKey } |
Foreach-Object {
&certutil.exe @('-exportpfx', '-p', 'secret', $_.Thumbprint, "$($_.Subject).pfx")
}
當心,那個有時您無法用作Subject
檔案名稱,由於 Unicode 中的外字字元無效。
答案2
在 PowerShell 中執行此操作可從一長串 Windows 伺服器遠端匯出憑證。 $servers 是伺服器清單。
foreach ($server in $servers){
Invoke-command $server {
Get-ChildItem -Path 'Cert:\localmachine\My' |
Where-Object { $_.hasPrivateKey } |
Foreach-Object {&certutil.exe @('-exportpfx', '-f', '-p','your_password',$_.Thumbprint, "d:\$($_.Subject).pfx")}
}
Move-Item -Path \\$server\d$\*.pfx -Destination C:\$server.pfx -Force
}
使用 Java keytool.exe 將每個 pfx 檔案轉換為 JKS 金鑰庫檔案。 Keytool 是每個 Java 安裝的一部分。您可以在本機電腦或遠端伺服器(如果已安裝 Java)上執行此操作。
keytool.exe -importkeystore -srckeystore C:\server1.pfx -destkeystore C:\server1.jks -srcstoretype pkcs12 -deststoretype JKS -srcstorepass your_password -deststorepass your_password
您也可以使用 Powershell 執行此命令($server 是伺服器的名稱)($pwd 是保存我們用於加密檔案的密碼的變數):
foreach ($server in $servers){
& "C:\Program Files\Java\jre6\bin\keytool.exe" -importkeystore -srckeystore C:\$server.pfx -destkeystore C:\$server.jks -srcstoretype pkcs12 -deststoretype JKS -srcstorepass $pwd -deststorepass $pwd
}
答案3
- 以管理員身份開啟mmc
- 選單文件-> 新增/刪除管理單元 ( Ctrl+ M)
- 選擇證書管理單元位於左窗格中並點選添加
- 選擇電腦帳戶(第三個選項)
- 選擇另一台電腦並輸入您要管理其憑證的遠端系統的名稱
- 完成對話框並點擊“確定”
名稱可能略有不同。我的作業系統是德語,所以我大致翻譯了所有內容。