web-dev-qa-db-fra.com

Exporter un certificat installé et une clé privée à partir d'une ligne de commande à distance dans Windows à l'aide de quelque chose en plus de l'outil cermgr.msc

Je dois être capable d'exporter à distance un certificat d'ordinateur installé avec la chaîne de certification complète et des clés privées sur un serveur Windows. Le certificat est utilisé pour IIS et je souhaite l'utiliser pour une instance Apache exécutée sur le même serveur.

Je sais comment faire cela manuellement avec l'outil CERTMG.MSC MMC MMC, mais comment peut-on être effectué à partir d'une ligne de commande ou d'une machine distante sur le même domaine?

Je sais aussi voir simplement le certificat avec openssl s-client. Cela peut être utilisé pour enregistrer à la fois le certificat et la clé privée pour importer sur un fichier Java fichier keystore?

Certmgr via RDP est trop lent pour ce dont j'ai besoin. J'ai besoin d'une solution de script.

Mon environnement est tout Windows Server 2008 R2. PowerShell Remoting n'est pas sur, mais je peux l'obtenir.

J'ai confirmé que je ne peux pas utiliser le PowerShell Export-PfxCertificate, parce que mes serveurs ne sont pas assez nouveaux ...

Donc, si je peux utiliser PowerShell pour obtenir le bouteille du certificat, je souhaite, je peux ensuite le nourrir à la commande "certutil -exporpsfx". J'ai confirmé que cela fonctionnera.

Comment dois-je dir Le magasin de certificats similaire, "Dir Cert:\localmachine\My | Où-objet {$ _. HasprivateKey} |" puis nourrir qu'à l'exportation de Certutil avec la pimentation?

Ou, puis-je faire le dir d'abord et lui dire de ne pas imprimer que l'empreinte TUNT et non? Ensuite, enregistrez-la dans un fichier et lisez le fichier A faire la commande Certutil?

4
user1991791

Voir la question de la pile sur le débordement certificat d'exportation de IIS à l'aide de PowerShell.

Si la réponse fonctionne pour vous, vous pouvez exécuter PowerShell Code sur un serveur distant à l'aide de PSRemoting ( Entrée-psession ou invoke-commande ) ou Psexec .

Est-ce que quelqu'un sait comment Dir le magasin Cert Store, "Dir Cert:\localmachine\My | Où-objet {$ _. HasprivateKey} |" puis nourrissez-le à l'exportation CERTUTIL avec l'empreinte TVM?

Essayez ceci, travaille pour moi:

Get-ChildItem -Path 'Cert:\localmachine\My' |
    Where-Object { $_.hasPrivateKey } |
        Foreach-Object {
            &certutil.exe @('-exportpfx', '-p', 'secret',  $_.Thumbprint, "$($_.Subject).pfx")
         }

Méfiez-vous, cela parfois, vous ne pourriez pas utiliser Subject comme nom de fichier , en raison de caractères de langue étrangère non valides dans l'Unicode.

3
beatcracker

Faites cela dans PowerShell pour exporter le certificat à partir d'une longue liste de serveurs Windows à distance. $ Serveurs est une liste de serveurs.

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
}

Utilisez Java keytool.exe pour activer chaque fichier PFX dans un fichier de clé KeyStore JKS. KeyTool fait partie de tout Java Installation. Vous pouvez le faire sur votre local machine ou un serveur distant s'il a déjà Java installé.

keytool.exe -importkeystore -srckeystore C:\server1.pfx -destkeystore C:\server1.jks -srcstoretype pkcs12 -deststoretype JKS -srcstorepass your_password -deststorepass your_password

Vous pouvez également exécuter cela avec PowerShell ($ Server est le nom du serveur) ($ pwd est une variable qui détient le mot de passe que nous utilisons pour chiffrer le fichier):

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

}

2
user1991791