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.