boost::asio::ssl::context::add_verify_path

boost::asio::ssl::context::add_verify_path

本文关键字:verify path add context asio ssl boost      更新时间:2023-10-16

我想验证一个服务器的证书。我有一个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平台上有多重要。查明这种错误的唯一方法是通过调试器跟踪验证阶段,并在扫描目录时直接观察代码。