我使用java bouncycastle库创建了一个PFX PDU。在PFX PDU内部,有两个证书和两个加密的私钥。所有内容都用作PKCS#7数据内容(即没有加密,存储为八位字符串)。我根据PKCS#12(RFC 7292 Section 5)的指导原则组织了元素。然后我将DER编码的字节数组写入文件。
我在十六进制编辑器中打开文件,看到对象结构正常。我还阅读了文件内容并从中构建了一个bouncycastle PFX对象。但是当我尝试从我的文件系统打开.pfx文件时,证书导入向导会要求输入私钥的密码。我没有使用任何密码来创建PFX对象。我曾尝试使用空字符串和用于加密私钥的密码,但它们不起作用。它显示“您输入的密码不正确。”。
我在这里错过了什么吗?如何获取导入证书所需的密码?
答案 0 :(得分:1)
在RFC 7292的4.1节,第41页中,描述了AuthenticatedSafe的详细信息。 AutthenticatedSafe是序列OF ContentInfo,可以是三种类型之一。
AuthenticatedSafe ::= SEQUENCE OF ContentInfo
-- Data if unencrypted
-- EncryptedData if password-encrypted
-- EnvelopedData if public key-encrypted
将authenticatedSafe数据设为EncryptedData,您需要使用SecretKeyFactory和PBEParameterSpec从密码生成的SecretKey加密AuthenticatedSafe的BERencoded值。
希望,这会对你有所帮助。干杯!!!