【发布时间】:2014-05-02 15:03:00
【问题描述】:
我正在使用 Bouncy Castle java 类 (1.5) 来生成加密/签名的 CMS 消息。这些将作为电子邮件附件发送。
收件人将在解密之前使用 Windows 上的 OpenSSL 命令行验证消息。
我遇到了一个令我惊讶的问题。
Bouncy Castle 似乎根本不关心签名证书上的“使用”设置。我正在测试的是客户端和服务器身份验证证书,这显然是不正确的。
但是,在验证时,OpenSSL 抱怨证书使用不当(这在验证时似乎很奇怪(迟到),但没关系)
我收到以下消息:
验证失败 24188:error:2E099064:CMSroutines:CMS_SIGNERINFO_VERIFY_CERT:certificate verify error:.\crypto\cms\cms_smime.c:304:Verify error:unsupported certificate purpose
如果我包含“-no_signer_cert_verify”选项,一切正常(在这种情况下我也不需要包含 CAfile)。 OpenSSL 文档似乎表明证书的使用不受尊重,除非您打开“-用途”。 所以,我很困惑为什么会出现使用问题,并且不想为了绕过它而放弃签名证书的路径验证。 (使用正确使用证书的明显解决方案听起来很棒,但是,相信我,在这种情况下,我可能并不总是能够强制这样做,因为并非这些交易所的所有各方都能够可靠地做到这一点)。 有什么想法吗?
【问题讨论】:
-
如果您显示相关的 Bouncy Castle 代码,人们可能会帮助您解决一些问题。您可能应该将其分解为几个问题。在此处询问 Bouncy Castle 编程问题;并在 Super User 上询问 OpenSSL 命令的用法。
-
已在另一块板上解决。必须使用“- purpose any”选项来强制接受证书而不使用“电子邮件签名”。这允许删除“-no_signer_cert_verify”所以我继续获得证书的路径验证
标签: openssl digital-signature bouncycastle x509