我正在尝试使用OpenSSL api将证书和私钥导出为pfx文件。
要做到这一点,我调用PKCS12_create函数为-1表示nid_key和nid_cert(不加密密钥和证书)和0表示iter,mac_iter和keytype(使用默认值)。
该功能调用的结果(以及对i2d_PKCS12_bio的明显调用)是编码文件,可以在asn1 decoder中查看。
但是,此文件中的信息无法导入任何Windows或Firefox证书库。 Windows响应“发生内部错误。无法访问用户配置文件,或者您导入的私钥可能需要系统上未安装的加密服务提供程序。” Firefox回应“PKCS#12操作因未知原因而失败”。问题是密码被正确解释。
那么我需要做些什么才能生成操作系统或Firefox会在其商店中接受的pfx文件?
修改
关于我实际在做什么的更多信息。
要使用C#中的OpenSSL api,我使用的是ManagedOpenSsl包装器。我为该包装器添加了对EC密钥的支持,我可以生成密钥并使用这些密钥签署证书。这些证书由系统正确显示。
我使用OpenSSL命令行工具first one和我的代码构建了两个pfx文件second。文件形式的唯一区别是第一个命令行生成的文件末尾的额外整数。那么,我缺少证书或密钥形式的内容是否有特殊要求?
答案 0 :(得分:0)
拔掉头发两天后,我发现了问题。
为德国市场工作我们软件的一个要求是使用Brainpool曲线。 Windows操作系统不了解它们。 Firefox不了解它们。 OpenSSL只在beta 1.0.2中知道它们。如果我创建NIST证书和密钥并将它们放在一个pfx文件中,一切正常。