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

2

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

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

Eu também sei como visualizar apenas o certificado com openssl s-client . Isso pode ser usado para salvar o certificado e a chave privada para importar para um arquivo de armazenamento de chaves Java?

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

Meu ambiente é todo Windows Server 2008 R2. A comunicação remota do PowerShell não está ativada, mas posso 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á-lo com o comando "certutil -exportpfx". Eu confirmei que isso funcionará.

Como faço dir o armazenamento de certificados como: "dir cert: \ localmachine \ my | Where-Object {$ _. hasPrivateKey}" E, em seguida, alimento isso com a exportação certutil com a impressão digital ?

OU, eu poderia fazer o diretório primeiro e dizer para imprimir apenas a impressão digital e não a coisa toda? Então salve isso em um arquivo, e leia o arquivo a faça o comando certutil?

    
por user1991791 13.03.2015 / 12:45

3 respostas

2

Veja a pergunta sobre estouro de pilha Exportar certificado do IIS usando o PowerShell .

Se a resposta funcionar para você, você poderá executar o código do PowerShell no servidor remoto usando PSRemoting ( Digite-PSSession ou Invoke-Command ) ou sexsex .

Does anyone know how to dir the cert store like, "dir cert:\localmachine\my | Where-Object { $_.hasPrivateKey } | " AND then feed that to the certutil export with the thumbprint?

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, às vezes você não seria capaz de usar Subject como nome de arquivo , devido a inválido caracteres de idioma no Unicode.

    
por 13.03.2015 / 15:34
2

Faça isso no PowerShell para exportar o certificado de uma longa lista de servidores Windows remotamente. $ 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 o keytool.exe Java para transformar cada arquivo pfx em um arquivo de armazenamento de chaves JKS. O Keytool faz parte de todas as instalações do 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

}

    
por 07.12.2015 / 23:09
-2
  1. Abra o mmc como administrador
  2. Menu arquivo - > Adicionar / Remover Snap-in ( Ctrl + M )
  3. Selecione o snap-in Certificados no painel esquerdo e clique em Adicionar
  4. Selecione Conta do computador (terceira opção)
  5. Escolha Outro computador e insira o nome do sistema remoto no qual você deseja gerenciar os certificados de
  6. Preencha a caixa de diálogo e clique em OK

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

    
por 13.03.2015 / 13:04