converte a chave .p7b para um .pfx

10

Eu tenho um certificado SSL no formato .p7b que preciso converter em .pfx. Se eu tentar isso através do gerenciamento de certificado do Windows, a opção de especialista como .pfx estará desabilitada.

Tentando com o openssl Eu encontrei os dois comandos a seguir para fazer a conversão:

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer

mas não tenho certeza de qual chave usar para o comando esecond ou a que certificado se refere o CACert.cer.

Como posso converter essa chave para o formato .pfx?

    
por DrStalker 10.11.2009 / 05:37

5 respostas

18

O PKCS # 7 não inclui a parte privada (chave) de um par de certificado / chave privada; ele é comumente usado para disseminação de certificado (por exemplo, como resposta a uma solicitação de certificado PKCS # 10, como meio de distribuir S / MIME certs usados para criptografar mensagens ou para validar mensagens assinadas etc). É importante lembrar que é somente para certificados que são, por definição, itens públicos.

O PKCS # 12 é um contêiner mais universal - destina-se a armazenar as partes da chave privada e do certificado público juntas, para que possam ser movidas. Ele tem a capacidade de ser protegido por senha para fornecer alguma proteção às chaves.

O PFX foi o antecessor do PKCS # 12.

Você não pode (como aponta Anitak) converter do PKCS # 7 para o PKCS # 12 sem dados adicionais (a parte da chave privada) porque o PKCS # 7 não possui todos os dados.

Mark Sutton apontou porque você não pode exportar como PFX - o certificado em questão tem sua chave privada sinalizada como não exportável. O provedor de serviços de criptografia (CSP) não permitirá que essa chave seja movida, isso é intencional. A única maneira * de obter um par de chaves cert \ exportável é se o certificado original tiver sido emitido com o sinalizador exportável definido. Também é possível que não exista nenhuma chave privada associada ao certificado, mas estou assumindo que esse não é o caso aqui.

Há um bom resumo dos vários tipos de PKCS na Wikipedia .

  • A única maneira legítima, pelo menos. Dependendo do hardware do CSP \ Crypto, pode haver mecanismos, especialmente para CSPs de software, mas essa é uma área de pesquisa de vulnerabilidade de segurança apenas no que me diz respeito, não de administração de sistemas.
por 10.11.2009 / 11:09
12

Eu passo por isso a cada dois anos (quando eu renovo um certificado de assinatura de código) e é uma dor a cada vez.

Uma informação importante é que você pode simplesmente renomear os arquivos .p7b para .spc (conforme declarado aqui: link ).

Você pode usar a ferramenta pvk2pfx.exe para converter seu PVK + SPC em um PFX.

pvk2pfx.exe -pvk input.pvk -pi <existing_input.pvk_password> -spc input.spc -pfx output.pfx -po <new_output.pfx_password>

(você pode pular a etapa de renomeação do p7b e usá-la diretamente; não tentei ...)

    
por 27.01.2010 / 19:19
3

Com a ferramenta Windows, se a opção pfx estiver desativada, significa que a chave privada não pode ser exportada do armazenamento local. Isso ocorre porque não está lá (porque as chaves não foram geradas na caixa que você está usando) ou porque quando você gerou as chaves, a chave privada não foi marcada como exportável e o modelo de certificado do Windows não foi configurado para permitir exportação.

Suponho que você esteja usando uma autoridade de certificação da Microsoft para emitir seus certificados. Está correto?

Se sim, então: -

1.Certifique-se de que o modelo de certificado permite a exportação de chaves privadas.
2.Como você está gerando sua solicitação de certificado, você pode usar a seguinte técnica

CRIE o arquivo INF da seguinte forma:

[Versão]
Signature="$ Windows NT $

[NewRequest]
Subject="etc"
KeySpec = 1
Exportável = 1
MachineKeySet = TRUE
ProviderName="CSPName"
ProviderType = 1

[RequestAttributes] CertificateTemplate =

OBSERVE o Exportável = 1
Em seguida, use os comandos fllowing no prompt de comando

certreq -new infile.inf reqfile.req // onde infile.inf é o arquivo acima e reqfile é o arquivo de solicitação de saída

certreq-submeta -config \ reqfile.req // Submete a solicitação cert ao CA

Quando isso estiver concluído, você poderá exportar o certificado como um pfx

Alternativamente vá para link onde coloquei minha ferramenta de linha de comando gratuita que faz tudo isso para você e exporta o certificado como pfx uma vez terminado

    
por 10.11.2009 / 09:58
1

Eu posso estar errado, mas acho que seu arquivo PCKCS # 7 inclui apenas a metade pública do seu certificado.

O arquivo PKCS # 12 precisaria ter as duas metades - daí porque ele precisa da opção -inkey .

    
por 10.11.2009 / 06:01
1

Como Helvick apontou, a resposta do PKCS10 é PKCS7 e não contém a chave privada. Portanto, ao gerar o CSR, você deve ter gerado o arquivo privatekey.key. Você pode usar os seguintes comandos. (Eu sei que essa é uma pergunta de quatro anos, mas não consegui seguir a discussão na página).

openssl pkcs7 -inform DER -in PK7BDownloadedArchive.p7b -text -print_certs -out intermediateCert.pem

openssl pkcs12 -export -in intermediateCert.pem -inkey privateKey.key -out FinalPKCS12Cert.p12

Boa sorte!

Atenciosamente, JE

    
por 09.06.2014 / 08:58