C++ 如何跳过SSL_set_verify()中的自签名检查

C++ 如何跳过SSL_set_verify()中的自签名检查,c++,c,security,ssl,openssl,C++,C,Security,Ssl,Openssl,我正在使用OpenSSL库编写一个小程序,该程序假定与服务器建立连接,并检查服务器证书是否与本地证书匹配。此服务器分发自签名证书,这会导致握手失败,并显示自签名证书错误消息 我正在使用以下功能: SSL_set_verify(tls->ssl, SSL_VERIFY_PEER, NULL); 您不应该跳过对自签名证书的检查,因为否则攻击者只需在中间人攻击中提供自签名证书即可。相反,您应该检查是否需要特定的自签名证书。例如,可以通过将它添加到信任存储区来完成。@中间的StfffululL富

我正在使用OpenSSL库编写一个小程序,该程序假定与服务器建立连接,并检查服务器证书是否与本地证书匹配。此服务器分发自签名证书,这会导致握手失败,并显示自签名证书错误消息

我正在使用以下功能:

SSL_set_verify(tls->ssl, SSL_VERIFY_PEER, NULL);

您不应该跳过对自签名证书的检查,因为否则攻击者只需在中间人攻击中提供自签名证书即可。相反,您应该检查是否需要特定的自签名证书。例如,可以通过将它添加到信任存储区来完成。@中间的StfffululL富人不能攻击,因为还有一个对等证书的检查,应该与我的设备中保存的本地证书匹配。因此,我想跳过sefsigned检查,只保留对等证书与我的本地证书的检查,那么你基本上不是在问如何完全禁用证书验证(并且只在以后进行自己的检查)?这是通过使用
SSL\u-VERIFY\u-NONE
而不是
SSL\u-VERIFY\u-PEER
完成的。据我所知,
SSL\u-VERIFY\u-NONE
用于检查具有本地证书的对等证书。否则如何进行此操作?
SSL\u-VERIFY\u-NONE
在TLS握手期间禁用证书检查。据我所知,您希望在握手之外检查证书,即使设置了
SSL\u VERIFY\u NONE
也可以这样做。