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.
Vídeo
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
Observação: 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-----