O PKCS # 7 não inclui a parte privada (chave) de um par de certificado / chave privada; é comumente usado para disseminação de certificado (por exemplo, como resposta a uma solicitação de certificado PKCS # 10, como um meio de distribuir certificados S / MIME usado para criptografar mensagens ou validar mensagens assinadas, etc.). É importante lembrar que é apenas para certificados que são, por definição, itens públicos.
O PKCS # 12 é um contêiner mais universal - destina-se a armazenar a chave privada e as partes do certificado público para que possam ser movimentadas. Ele tem a capacidade de ser protegido por senha para fornecer alguma proteção às chaves.
PFX foi o antecessor do PKCS # 12.
Você não pode (como aponta Anitak) converter do PKCS # 7 para PKCS # 12 sem dados adicionais (a parte da chave privada) porque o PKCS # 7 não possui todos os dados.
Mark Sutton apontou por que 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 criptográficos (CSP) não permitirá que essa chave seja movida; isso é intencional. A única maneira * de obter um par exportável cert \ key é se o certificado original tiver sido emitido com o conjunto de sinalizadores exportáveis. Também é possível que não haja uma 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 CSP \ Crypto, pode haver mecanismos, especialmente para CSP apenas de software, mas essa é uma área para pesquisa de vulnerabilidades de segurança apenas no que me diz respeito, não administrador de sistemas.
Eu passo por isso a cada 2 anos (quando renovo um certificado de assinatura de código) e é uma dor cada vez.
Uma informação importante é que você pode simplesmente renomear arquivos .p7b para .spc (conforme indicado aqui: http://support.microsoft.com/kb/269395 ).
Você pode usar a ferramenta pvk2pfx.exe para converter seu PVK + SPC em um PFX.
(você pode pular a etapa de renomeação do p7b e usá-la diretamente; não tentei ...)
fonte
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 existe (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 a exportação.
Suponho que você esteja usando uma autoridade de certificação da Microsoft para emitir seus certificados. Isso está correto?
Se sim, então: -
1. Verifique se o modelo de certificado permite a exportação de chaves privadas.
2.Como você está gerando sua solicitação de certificado, pode usar a seguinte técnica
CREATE INF file da seguinte maneira
[Version]
Signature = "$ Windows NT $
[NewRequest]
Subject =" etc "
KeySpec = 1 Exportável
= 1
MachineKeySet = TRUE
ProviderName =" CSPName "
ProviderType = 1
[RequestAttributes] CertificateTemplate =
NOTE the Exportable = 1
Em seguida, use os comandos de fluxo no prompt de comando
certreq -novo infile.inf reqfile.req // em que infile.inf é o arquivo acima e reqfile é o arquivo de solicitação de saída
certreq -submit -config \ reqfile.req // Envia a solicitação de certificação para a CA.
Quando isso estiver concluído, você irá poder exportar o certificado como pfx
Alternativamente, vá para http://www.blacktipconsulting.com/Site/Products.html onde coloquei minha ferramenta de linha de comando gratuita que faz tudo isso para você e exporta o certificado como pfx depois de concluído
fonte
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 fazer isso enquanto seguia a discussão na página).
Boa sorte!
Atenciosamente, JE
fonte
-inform
argumento.Eu posso estar errado, mas acho que o seu arquivo PCKCS # 7 inclui apenas a metade pública do seu certificado.
O arquivo PKCS # 12 precisaria ter as duas metades - por isso, ele precisa da
-inkey
opção.fonte