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.