OpenSSL SSL_get_verify_result返回google.com的错误18

wn9m85ua  于 2023-10-19  发布在  Go
关注(0)|答案(1)|浏览(130)

我正在编写自己的C/C++库来处理TLS流。我被OpenSSL卡住了,拒绝验证google.com的证书。这似乎只发生在google.com上。openssl s_client -showcerts -connect google.com:443可以正确验证google.com的证书

depth=2 OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = US, O = Google Trust Services, CN = GTS CA 1O1
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.google.com
verify return:1
---
Certificate chain
 0 s:C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.google.com
   i:C = US, O = Google Trust Services, CN = GTS CA 1O1

但是我的代码

...
SSL_CTX_set_default_verify_paths(ctx);
...
// create socket
SSL_set_verify(ssl, SSL_VERIFY_NONE, nullptr);
// handshake, etc...
...
SSL_get_verify_result(ssl); // always return X509_V_DEPTH_ZERO_SELF_SIGNED_CERT

为什么命令成功地验证了证书,但我的代码不能?谢谢.

83qze16e

83qze16e1#

您的信任库不包含与google证书完全匹配的内容,但不会执行浏览器通常会验证与证书关联的签名的其他步骤。openssl基础知识的一个很好的资源:https://opensource.com/article/19/6/cryptography-basics-openssl-part-1
此外,您的具体验证结果可以在这里找到:https://www.openssl.org/docs/man1.0.2/man1/verify.html
X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT -您收到的是自签名证书。
希望能帮上忙!

相关问题