Exporte o certificado instalado e a chave privada de uma linha de comando remotamente no Windows usando algo além da ferramenta certmgr.MSC

Exporte o certificado instalado e a chave privada de uma linha de comando remotamente no Windows usando algo além da ferramenta certmgr.MSC

Preciso exportar remotamente um certificado de computador instalado com a cadeia completa de certificados e chaves privadas em um servidor Windows. O certificado é usado para IIS e quero usá-lo para uma instância do Apache em execução no mesmo servidor.

Eu sei como fazer isso manualmente com a ferramenta snap-in certmgr.MSC mmc, mas como isso pode ser feito a partir de uma linha de comando ou de uma máquina remota no mesmo domínio?

Também sei como visualizar apenas o certificado com arquivos openssl s-client. Isso pode ser usado para salvar o certificado e a chave privada para importação para um arquivo de armazenamento de chaves Java?

Certmgr via RDP é muito lento para o que preciso. Preciso de uma solução de script.

Meu ambiente é tudoServidor Windows 2008R2. A comunicação remota do PowerShell não está ativada, mas consigo ativá-la.

Confirmei que não posso usar o PowerShell Export-PfxCertificate, porque meus servidores não são novos o suficiente...

Portanto, se eu puder usar o PowerShell para obter a impressão digital do certificado desejado, posso alimentá-la no comando "certutil -exportpfx". Eu confirmei que vai funcionar.

Como é que eudiretórioo armazenamento de certificados como "dir cert:\localmachine\my | Where-Object { $_.hasPrivateKey } | " E depois alimente isso para a exportação do certutil com a impressão digital?

OU, eu poderia fazer o dir primeiro e dizer para imprimir apenas a impressão digital e não a coisa toda? Em seguida, salve isso em um arquivo e leia o arquivo para fazer o comando certutil?

Responder1

Consulte a pergunta Stack OverflowExportar certificado do IIS usando PowerShell.

Se a resposta funcionar para você, você pode executar o código do PowerShell no servidor remoto usando PSRemoting(Enter-PSSessionouInvocar-Comando) oupsexec.

Alguém sabe como direcionar o armazenamento de certificados como "dir cert:\localmachine\my | Where-Object { $_.hasPrivateKey } | "E depois alimentá-lo para a exportação do certutil com a impressão digital?

Tente isso, funciona para mim:

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

Cuidado, issoàs vezes você não conseguiria usar Subjectcomo nome de arquivo, devido a caracteres inválidos de idioma estrangeiro no Unicode.

Responder2

Faça isso no PowerShell para exportar remotamente o certificado de uma longa lista de servidores Windows. $servers é uma lista de servidores.

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
}

Use Java keytool.exe para transformar cada arquivo pfx em um arquivo keystore JKS. Keytool faz parte de cada instalação Java. Você pode fazer isso em sua máquina local ou em um servidor remoto se já tiver o Java instalado.

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

Você também pode executar isso com o Powershell ($server é o nome do servidor) ($pwd é uma variável que contém a senha que usamos para criptografar o arquivo):

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

}

Responder3

  1. Abra o mmc como administrador
  2. Cardápioarquivo-> Adicionar/Remover Snap-in ( Ctrl+ M)
  3. Selecione osCertificadossnap-in no painel esquerdo e cliqueAdicionar
  4. SelecioneConta de computador(terceira opção)
  5. EscolherOutro computadore digite o nome do sistema remoto do qual deseja gerenciar os certificados
  6. Complete a caixa de diálogo e clique em OK

Os nomes podem ser um pouco diferentes. Meu sistema operacional é alemão, então traduzi tudo aproximadamente.

informação relacionada