4

我希望验证服务器的证书。我有一个 boost::asio::ssl::context

这成功验证了证书:

context.load_verify_file("E:\\a\\windows\\Path\\to\\certificate\\9207bca9.0");

但是,我不希望明确指定要验证证书的文件。我希望能够将它们放在一个目录中,并告诉上下文使用该文件夹中的文件来验证证书。所以我这样做:

context.add_verify_path("E:\\a\\windows\\Path\\to\\certificate");

并且验证不成功

注意:文件名9207bca9.0:9207bca9是CA证书的主题的hash,扩展名是'.0'以满足这里找到的add_verify_path方法的要求(也是这个文件的唯一内容是根证书。请记住,我已成功使用此文件验证证书):

http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/reference/ssl__context/add_verify_path/overload1.html

有什么建议么?

4

1 回答 1

3

我能想到的只有两种可能,第一种是你的hash值不正确,可以这样验证:

openssl x509 -noout -hash -in ca-certificate-file

第二个是您的目录配置中有一些错误阻止 OpenSSL 使用 CA 目录,例如,权限和所有权在 Linux 系统上很重要,不确定这些在 Windows 平台上的重要性。查明此类错误的唯一方法是通过调试器跟踪验证阶段,并在扫描目录时直接观察代码。

于 2013-04-10T21:47:42.907 回答