Ram*_*sey 12 c c++ ssl openssl ssl-certificate
我正在用OpenSSL库编写一个小程序,假设它与SSLv3服务器建立连接.此服务器分发自签名证书,导致握手失败并显示以下消息:"sslv3警报握手失败,证书链中的自签名证书."
有没有办法可以强制连接继续进行?我试过这样调用SSL_CTX_set_verify:
SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, NULL);
Run Code Online (Sandbox Code Playgroud)
但它似乎没有改变任何东西.
有什么建议?
默认情况下,OpenSSL 会遍历证书链并尝试在每一步进行验证,SSL_set_verify()不会更改,请参见手册页。引用它:
实际的验证过程是使用内置验证过程或使用另一个应用程序提供的验证函数集来执行的,该函数集设置为 SSL_CTX_set_cert_verify_callback(3)。
因此,解决方案是创建一个简单的回调并设置该回调,以便覆盖所有证书链遍历:
static int always_true_callback(X509_STORE_CTX *ctx, void *arg)
{
return 1;
}
SSL_CTX_set_cert_verify_callback(CTX, always_true_callback);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18042 次 |
| 最近记录: |