我们正在编写一个新的服务器/客户端应用程序,需要在OpenSSL 1.1.0中验证自签名证书,其中CN字段并不重要。
我试着做了以下事情,但似乎没有效果:
X509_VERIFY_PARAM *param = NULL;
param = SSL_get0_param(sslo.ssl);
X509_VERIFY_PARAM_set1_host(param, nullptr, 0);
如何有效地忽略此字段的所有验证?
Shane回答后的更新:
我尝试使用SSL_CTX_set_verify设置verify_callback。在回调中,我调用了X509_STORE_TX_get_error_depth。由此产生的错误代码为X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT,根据文档,这意味着"通过的证书是自签名的,在受信任证书列表中找不到相同的证书。">
这个错误非常普遍,与CN无关,如果我只将证书中的CN字段更改为适当的值,就不会发生这种情况。
使用SSL_CTX_set_verify调用来指定您自己的验证回调函数,在该函数中您可以确定有关证书的任何内容。
仔细阅读该页面,它应该会告诉你你需要知道的一切,该页面还包括一个示例,如果你愿意,你可以根据这个示例使用处理程序。