Exportar certificados e chave privada de um arquivo PKCS # 12 com OpenSSL

Nota: Este artigo não se aplica à assinatura de código SSL.com e aos certificados de assinatura de documentos. As chaves privadas desses tipos de certificados não podem ser exportadas e não podem ser geradas como arquivos .pfx. Os certificados de assinatura de código e assinatura de documentos SSL.com e suas chaves privadas só podem ser gerados e armazenados no Ambiente de assinatura em nuvem eSigner, um Yubikey dispositivo ou um dispositivo compatível Nuvem HSM.

Este guia explicará como extrair informações de um arquivo PKCS # 12 com OpenSSL. O PKCS # 12 (também conhecido como PKCS12 ou PFX) é um formato binário para armazenar uma cadeia de certificados e uma chave privada em um único arquivo criptografável. Os arquivos PKCS # 12 são comumente usados ​​para importar e exportar certificados e chaves privadas em computadores Windows e macOS e geralmente possuem extensões de nome de arquivo .p12 or .pfx.

Para obter instruções mais úteis e as últimas notícias de segurança cibernética, inscreva-se no boletim informativo do SSL.com aqui:

O que é OpenSSL?
OpenSSL é um kit de ferramentas de linha de comando de código aberto muito útil para trabalhar com X.509 certificados, solicitações de assinatura de certificado (CSRs) e chaves criptográficas. Se você estiver usando uma variante do UNIX como Linux ou macOS, o OpenSSL provavelmente já está instalado em seu computador. Se você gostaria de usar OpenSSL no Windows, você pode habilitar Subsistema Linux do Windows 10 ou instalar Cygwin. Você também pode facilmente crio um arquivo PKCS # 12 com openSSL.

SSL.com oferece uma grande variedade de SSL /TLS certificados de servidor para sites HTTPS.

COMPARAR SSL /TLS CERTIFICADOS

Vídeo

https://www.youtube.com/watch?v=S_imVMFOdhU

Em todos os exemplos mostrados abaixo, substitua os nomes dos arquivos com os quais você realmente está trabalhando INFILE.p12, OUTFILE.crt e OUTFILE.key.

Exibir informações sobre o PKCS # 12 na tela

Para despejar todas as informações em um arquivo PKCS # 12 na tela em Formato PEM, use este comando:

openssl pkcs12 -info -in INFILE.p12 -nodes

Em seguida, será solicitada a senha do arquivo PKCS # 12:

Digite a senha de importação:

Digite a senha digitada ao criar o arquivo PKCS # 12 e pressione enter. O OpenSSL exibirá todos os certificados e chaves privadas do arquivo na tela:

Atributos da bolsa localKeyID: AC 3E 77 9A 99 62 84 3D 77 CB 44 0D F9 78 57 7C 08 28 05 97 assunto = / CN = Aaron Russell/emailAddress=*********@gmail.com emissor = / C = US / ST = Texas / L = Houston / O = SSL Corp / CN = SSL.com cliente Certificado Intermediário CA RSA R1 ----- BEGIN CERTIFICATE ----- MIIF1DCCA7ygAwIBAgIQcOrAJCMayJsZBKJsyz / aQDANBgkqhkiG9w0BAQsFADB + MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0b24x ETAPBgNVBAoMCFNTTCBDb3JwMTowOAYDVQQDDDFTU0wuY29tIENsaWVudCBDZXJ0 ... bwK6ABAZUq6QcvhD0LYsXya + ncDCR6wxb9E0DWd4ATQMzxGTu / yE3kT + 9Ef6IY + n armh3HZUfan2Hb64YD0tjLMca / PC + sKAZu28gB / 3HQRHIFugvh6RO3bIoorl0jUg 1Ml2r83 ++ biS0HL6JdcwuuUF ----- END CHAVE PRIVADA -----

Criptografar chave privada

Se você deseja criptografar a chave privada e protegê-la com uma senha antes da saída, simplesmente omita o -nodes sinalizador do comando:

openssl pkcs12 -info -in INFILE.p12

Neste caso, você será solicitado a inserir e verificar uma nova senha depois que o OpenSSL emitir quaisquer certificados e a chave privada for criptografada (observe que o texto da chave começa com -----BEGIN ENCRYPTED PRIVATE KEY-----):

Digite frase secreta PEM: Verificando - Digite frase secreta PEM: ----- BEGIN ENCRIPTADA CHAVE PRIVADA ----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIGwhJIMXRiLQCAggA MBQGCCqGSIb3DQMHBAiXdeymTYuedgSCBMjwGg78PsqiNJLfpDFbMxL98u3tK9Cs ... SGVCCBj5vBpSbBXAGbOv74h4satKmAMgGc8SgU06geS9gFgt / wLwehMJ / H4BSmex 4S / 2tYzZrDBJkfH9JpggubYRTgwfAGY2BkX03dK2sqfu + QVTVTKMj2VI0sKcFfLZ BDW = ----- END CIFRADA CHAVE PRIVADA-----

Extrair apenas certificados ou chave privada

Se você deseja apenas gerar a chave privada, adicione -nocerts para o comando:

openssl pkcs12 -info -in INFILE.p12 -nodes -nocerts

Se você precisar apenas dos certificados, use -nokeys (e uma vez que não estamos preocupados com a chave privada, também podemos omitir com segurança -nodes):

openssl pkcs12 -info -in INFILE.p12 -nokeys

Salvar certificados e chaves privadas em arquivos

Você pode exportar os certificados e a chave privada de um arquivo PKCS # 12 e salvá-los no formato PEM para um novo arquivo, especificando um nome de arquivo de saída:

openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -nodes

Novamente, será solicitada a senha do arquivo PKCS # 12. Como antes, você pode criptografar a chave privada removendo o -nodes sinalizador do comando e / ou adicione -nocerts or -nokeys para produzir apenas a chave privada ou certificados. Portanto, para gerar um arquivo de chave privada, podemos usar este comando:

openssl pkcs12 -in INFILE.p12 -out OUTFILE.key -nodes -nocerts

E para criar um arquivo incluindo apenas os certificados, use este:

openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -nokeys

Converter chave privada em formato PKCS # 1

Os exemplos acima geram a chave privada no padrão do OpenSSL PKCS # 8 formato. Se você sabe que precisa PKCS # 1 em vez disso, você pode canalizar a saída do utilitário PKCS # 12 do OpenSSL para seu utilitário RSA ou EC, dependendo do tipo de chave. Ambos os comandos abaixo produzirão um arquivo de chave no formato PKCS # 1:

RSA

openssl pkcs12 -em INFILE.p12 -nodes -nocerts | openssl rsa -out OUTFILE.key

ECDSA

openssl pkcs12 -em INFILE.p12 -nodes -nocerts | openssl ec -out OUTFILE.key

Nota: Você pode dizer a diferença entre os arquivos de chave privada PKCS # 8 e PKCS # 1 observando a primeira linha do texto. Os arquivos PKCS # 1 especificarão o algoritmo:
-----BEGIN RSA PRIVATE KEY-----

Os arquivos PKCS # 8 não mostram o algoritmo e também podem ser criptografados:
-----BEGIN PRIVATE KEY-----
or
-----BEGIN ENCRYPTED PRIVATE KEY-----


Obrigado por escolher SSL.com! Se você tiver alguma dúvida, entre em contato conosco por e-mail em Support@SSL.com, ligar 1-877-SSL-SECUREou clique no link de bate-papo no canto inferior direito desta página.

Inscreva-se no boletim informativo de SSL.com

Não perca novos artigos e atualizações de SSL.com

Mantenha-se informado e seguro

SSL.com é líder global em segurança cibernética, PKI e certificados digitais. Inscreva-se para receber as últimas notícias do setor, dicas e anúncios de produtos da SSL.com.

Adoraríamos receber seu feedback

Responda à nossa pesquisa e deixe-nos saber sua opinião sobre sua compra recente.