2013-04-10 49 views
4

我希望验证服务器的证书。我有一个boost :: ASIO :: SSL ::背景boost :: asio :: ssl :: context :: add_verify_path

这成功地验证了证书:

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.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

任何sugg estions?

+0

从问题中不清楚实际问题是什么。 “所以我这样做” - 然后呢? –

+0

你解决了你的问题吗?当你使用像这样的“准官方”pem来检查根服务器时会发生什么:http://curl.haxx.se/ca/cacert.pem。它在单个文件中有多个证书,并在windows下为我工作(openssl 1.0.1p和ctx.load_verify_file(..)) –

回答

2

只有两个,我能想到的可能性,第一个是你的哈希值是不正确,这可以证明,像这样:

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

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