c - SSL_CTX_set_cert_verify_callback 获取链表

标签 c ssl openssl

当我使用 SSL_CTX_set_cert_verify_callback 注册回调时,我得到了回调。 ctx 包含证书,但我似乎无法找到客户端发送的整个证书链。有谁知道 ctx 中的哪个字段会有它?或者我如何检索它以便我可以进行完整的验证。

SSL_CTX_set_cert_verify_callback(ctx, ssl_app_verify_callback, NULL);

谢谢...

最佳答案

客户端证书的验证回调与服务器证书的回调工作方式相同,即

  • OpenSSL 将根据客户端发送的内容和服务器知道的本地 CA 路径构建链。
  • 对于链的每个部分,将调用验证回调。这意味着即使客户端没有发送它们,也会为作为信任链一部分的本地证书调用回调。回调不会调用不属于链的证书,即使客户端已发送它们也是如此。

客户端是否会发送链证书取决于客户端。但是标准中没有任何内容使这成为不可能并且openssl s_client -cert leaf.pem -CAfile chain.pem ...可用于使客户端同时发送叶证书和链证书。

关于c - SSL_CTX_set_cert_verify_callback 获取链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36095878/

相关文章:

c - 将嵌套结构指针分配给嵌套结构

c# - 使用 "greater than or equals"或仅使用 "greater than"

SSL 证书不适用于 safari

amazon-web-services - Route 53 aws www.domain.com 有效,但 domain.com 无效

c# - 使用无效证书解决方法的 WebService 的 SSL 连接不起作用

ssl - .keystore 文件的问题

java - 如何编写包含签名的 .RSA 文件(使用 Java)

c - 如何在C中逐行读取数字文本文件并将其存储到数组中?

go - Paho GO 客户端无法连接到 Broker

c - 为什么 printf(char[]) 会生成警告,同时 printf ("asdf") 不会