Qual é a diferença entre um arquivo cer, pvk e pfx?

204

Qual é a diferença entre um arquivo cer, pvk e pfx? Além disso, quais arquivos eu mantenho e quais devo fornecer a minhas contrapartes?

Jonathan Allen
fonte
Também [1] , [2] , [3]
Pacerier

Respostas:

143

O Windows usa a extensão .cer para um certificado X.509. Eles podem estar em "binário" (ASN.1 DER) ou podem ser codificados com Base-64 e ter um cabeçalho e rodapé aplicados (PEM); O Windows também reconhecerá. Para verificar a integridade de um certificado, você deve verificar sua assinatura usando a chave pública do emissor ... que é, por sua vez, outro certificado.

O Windows usa .pfx para um arquivo PKCS # 12. Este arquivo pode conter uma variedade de informações criptográficas, incluindo certificados, cadeias de certificados, certificados de autoridade raiz e chaves privadas. Seu conteúdo pode ser protegido criptograficamente (com senhas) para manter as chaves privadas privadas e preservar a integridade dos certificados raiz.

O Windows usa .pvk para um arquivo de chave privada. Não tenho certeza de qual Windows padrão (se houver) segue para eles. Espero que sejam chaves codificadas em PKCS # 8. Emmanuel Bourg relata que este é um formato proprietário. Alguma documentação está disponível.

Você nunca deve divulgar sua chave privada. Eles estão contidos nos arquivos .pfx e .pvk.

Geralmente, você apenas troca seu certificado (.cer) e os certificados de quaisquer emissores intermediários (ou seja, os certificados de todas as suas CAs, exceto a CA raiz) com outras partes.

erickson
fonte
7
Os arquivos PVK não estão no PKCS # 8, é um formato proprietário. Veja drh-consultancy.demon.co.uk/pvk.html
Emmanuel Bourg
olhar para o utilitário pvk2pfx.exe nos SDKs janelas
BozoJoe
@ erickson, qual é o sentido de inventar .pvk? .Pfx não é suficiente?
Pacerier 19/11/16
@Pacerier Sim, o .pfx é suficiente. Não tenho certeza de qual era o objetivo do .pvk; Só posso supor que foi inventado na ignorância.
Erickson
55

Na plataforma Windows, esses tipos de arquivo são usados ​​para obter informações de certificado. Normalmente usado para certificado SSL e infraestrutura de chave pública (X.509).

  • Arquivos CER: o arquivo CER é usado para armazenar o certificado X.509. Normalmente usado para certificação SSL para verificar e identificar a segurança dos servidores web. O arquivo contém informações sobre o proprietário do certificado e a chave pública. Um arquivo CER pode estar em binário (ASN.1 DER) ou codificado com Base-64 com cabeçalho e rodapé incluídos (PEM), o Windows reconhecerá um desses layouts.
  • Arquivos PVK: significa chave privada. O Windows usa arquivos PVK para armazenar chaves privadas para assinatura de código em vários produtos da Microsoft. PVK é um formato proprietário.
  • Arquivos PFX Personal Exchange Format, é um arquivo PKCS12. Isso contém uma variedade de informações criptográficas, como certificados, certificados de autoridade raiz, cadeias de certificados e chaves privadas. É protegido criptograficamente com senhas para manter as chaves privadas privadas e preservar a integridade dos certificados raiz. O arquivo PFX também é usado em vários produtos da Microsoft, como o IIS.

para obter mais informações, visite: Arquivos de certificado: .Cer x .Pvk x .Pfx

rahul_pratap
fonte
4
Alguns arquivos: .... "o arquivo contém informações sobre o proprietário do certificado e as chaves de certificado públicas e privadas" ... estão incorretas. Como Erickson apontou em sua resposta: Ele contém apenas informações sobre a chave pública. Um arquivo .cer com chaves públicas e privadas seria inútil.
thor_hayek
1
Isto está errado. O arquivo .Cer não contém nenhuma chave privada. Por favor, melhore sua resposta.
ANewGuyInTown
36

Aqui estão minhas anotações pessoais, supercondensadas, no que diz respeito a este assunto atualmente, para quem estiver interessado:

  • O PKCS12 e o PEM podem armazenar cadeias de certificação inteiras: chaves públicas, chaves privadas e certificados raiz (CA) .
  • .pfx == .p12 == " PKCS12 "
    • totalmente criptografado
  • .pem == .cer == .cert == " PEM "
    • cert X509 codificado em base-64 (string) (binário) com um cabeçalho e rodapé
      • base-64 é basicamente apenas uma string de "A-Za-z0-9 + /" usada para representar 0-63, 6 bits de binário por vez, em sequência, às vezes com 1 ou 2 caracteres "=" no próprio termina quando há sobras ("=" sendo "caracteres de preenchimento / lixo / ignorar / jogar fora")
      • o cabeçalho e o rodapé são algo como "----- COMEÇAR CERTIFICADO -----" e "----- TERMINAR CERTIFICADO -----" ou "----- COMEÇAR A CHAVE PRIVADA CRIPTOGADA --- - "e" ----- TERMINAR CHAVE PRIVADA CRIPTOGADA ----- "
    • O Windows reconhece .cer e .cert como arquivos cert
  • .jks == " Java Key Store "
    • apenas um formato de arquivo específico do Java que a API usa
      • Os arquivos .p12 e .pfx também podem ser usados ​​com a API JKS
  • " Trust Stores " contêm certificados de raiz (CA) públicos, confiáveis, enquanto " Identity / Key Stores " contêm certificados de identidade privados; em termos de arquivo, no entanto, eles são os mesmos.
Andrew
fonte
Então, onde está definido o .pvk?
Zwcloud
@zwcloud eu dei o que sabia na época. As outras respostas dão isso.
Andrew
18

Na verdade, me deparei com algo assim há pouco tempo ... confira no msdn (veja a primeira resposta)

Em suma:

.cer - certificado armazenado no formato padrão X.509. Este certificado contém informações sobre o proprietário do certificado ... junto com chaves públicas e privadas.

.pvk - arquivos são usados ​​para armazenar chaves privadas para assinatura de código. Você também pode criar um certificado com base no arquivo de chave privada .pvk.

.pfx - significa formato de troca pessoal. É usado para trocar objetos públicos e privados em um único arquivo. Um arquivo pfx pode ser criado a partir do arquivo .cer. Também pode ser usado para criar um certificado de editor de software .

Resumi as informações da página com base na sugestão dos comentários.

Ryan Ferretti
fonte
2
Eu recomendaria citar ou resumir o conteúdo vinculado, além do próprio link. Dessa forma, você deve dar o devido crédito e nos proteger contra a perda de informações na próxima vez que a MS redesenhar seu site.
Jonathan Allen
Eu já vi esse link, mas eu não responde totalmente à pergunta.
Jonathan Allen
15
Além disso, algumas das informações no link estão incorretas. Por exemplo, você não pode extrair uma chave privada de um certificado. Obviamente.
Erickson
Para o comentário acima, não se trata de extração. Simplesmente não faz sentido ter chaves privadas em arquivos .cer. Um arquivo .cer deve ser compartilhado com o mundo exterior, portanto, ele carrega apenas chave pública.
Rajiv