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

Stack Overflowの質問を参照PowerShell を使用して IIS から証明書をエクスポートする

答えがうまくいけば、PSRemoting(を使用してリモートサーバー上でPowerShellコードを実行できます。入力-PSSessionまたは呼び出しコマンド) またはpsexec

「dir cert:\localmachine\my | Where-Object { $_.hasPrivateKey } | 」のように証明書ストアを dir し、それをサムプリントとともに 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. 選択するコンピュータアカウント(3番目のオプション)
  5. 選ぶ別のコンピュータ証明書を管理するリモートシステムの名前を入力します。
  6. ダイアログを完了して[OK]をクリックします

名前が若干異なる可能性があります。私の OS はドイツ語なので、すべてを大まかに翻訳しました。

関連情報