如何导入在没有密码的情况下创建的 .pfx 文件?

How can I import a .pfx file that was created without a password?

我使用 java bouncycastle 库创建了一个 PFX PDU。在 PFX PDU 内部,有两个证书和两个加密私钥。所有内容都用作 PKCS#7 数据内容(即不加密,存储为八位字节字符串)。我根据 PKCS#12 (RFC 7292 Section 5) 的准则组织元素。然后我将DER编码的字节数组写入文件。

我用十六进制编辑器打开文件,发现对象结构没问题。我还读取了文件内容并从中构建了一个 bouncycastle PFX 对象。但是当我尝试从我的文件系统打开 .pfx 文件时,证书导入向导要求输入私钥的密码。我没有使用任何密码来创建 PFX 对象。我曾尝试使用空字符串和用于加密私钥的密码,但它们没有用。显示“您输入的密码不正确”。

我在这里遗漏了什么吗?如何获取导入证书所需的密码?

在 RFC 7292 第 4.1 节第 41 页中,描述了 AuthenticatedSafe 的详细信息。 AuthenticatedSafe 是 ContentInfo 序列,可以是三种类型之一。

AuthenticatedSafe ::= SEQUENCE OF ContentInfo
-- Data if unencrypted
-- EncryptedData if password-encrypted
-- EnvelopedData if public key-encrypted

将您的 authenticatedSafe 数据设为 EncryptedData,您需要使用 SecretKeyFactory 和 PBEParameterSpec 提供的密码生成的 SecretKey 来加密 AuthenticatedSafe 的 BEEncoded 值。

希望这对您有所帮助。干杯!!!