OpenSSL + CAPI:可以在Windows证书存储区中找到CA证书,不会使用它来验证服务器证书

时间:2019-01-29 10:21:40

标签: openssl

我试图在连接到MQTT代理时使用带有OpenSSL的CAPI引擎来利用Windows证书存储,但是遇到了一个问题,即它似乎没有使用存储中的CA证书。 / p>

(提到MQTT是作为上下文,但是问题不涉及MQTT。)

我回过头来使用openssl.exe进行测试以消除我自己的代码中的问题。我正在使用here中预编译的v1.1.1a二进制文件,如OpenSSL Wiki上所列。

它可以通过Windows证书存储区中找到CA证书

openssl engine capi -t -post store_name:ROOT -post list_options:8 -post lookup_cert:mqtt

,但是在使用

连接到我的代理时,它似乎并没有使用它来验证服务器证书
openssl s_client -connect 192.168.56.101:8883 -showcerts -engine capi

(我为此测试添加了CA证书到我的个人存储中,因为使用s_client时我找不到将命令传递给CAPI引擎的方法,而个人存储是默认设置。)

客户端连接说

engine "capi" set.

并列出服务器发送的正确证书(我可以将根1的详细信息与商店中的详细信息相匹配),但是给我

verify error:num=19:self signed certificate in certificate chain

我的意思是在商店中找不到根证书,因此服务器和服务器提供的CA证书是不受信任的,因此链的根证书被认为是自签名的和不受信任的。 / p>

通过直接提供CA证书文件时,在我自己的客户端应用程序中执行成功的连接(使用OpenSSL但不使用CAPI),可以确定证书是有效的。

因此,我的问题是:

  • 为了简化测试,是否可以将引擎命令传递给s_client?
  • CAPI引擎验证证书是否存在问题?我到目前为止的搜索表明它可以正常工作。
  • 在设置中我可能会错过一些东西吗?

0 个答案:

没有答案