使用 certmgr.MSC 工具以外的其他工具,在 Windows 中從命令列遠端匯出已安裝的憑證和私鑰

使用 certmgr.MSC 工具以外的其他工具,在 Windows 中從命令列遠端匯出已安裝的憑證和私鑰

我需要能夠遠端匯出 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

  1. 以管理員身份開啟mmc
  2. 選單文件-> 新增/刪除管理單元 ( Ctrl+ M)
  3. 選擇證書管理單元位於左窗格中並點選添加
  4. 選擇電腦帳戶(第三個選項)
  5. 選擇另一台電腦並輸入您要管理其憑證的遠端系統的名稱
  6. 完成對話框並點擊“確定”

名稱可能略有不同。我的作業系統是德語,所以我大致翻譯了所有內容。

相關內容