c – boost :: asio :: ssl :: context :: add_verify_path

我想验证服务器的证书.我有一个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证书主题的哈希值,其扩展名为“.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

有什么建议?

最佳答案 我能想到的只有两种可能性,第一种是你的哈希值不正确,这可以这样验证:

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

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

点赞