获取错误字符串OpenSSL中的证书错误

问题描述:

OpenSSL中,我可以使用代码获取证书的errorno:获取错误字符串OpenSSL中的证书错误

if(SSL_get_peer_certificate(ssl) != NULL){ 
    if((error = SSL_get_verify_result(ssl)) != X509_V_OK){ 
     std::cout << "error no = " << error << std::endl; 
    } 
} 

但是,如果我试图从这个错误这样的错误字符串:

std::string temp = ERR_error_string(SSL_get_verify_result(ssl), NULL) ; 

我得到的是:

error:00000013:lib(0):func(0):reason(19) 

有什么办法在这里得到确切的原因是什么? 我已加载使用此代码错误字符串:

SSL_load_error_strings();

但我仍然没有得到确切的原因。如果我尝试使用 std::string a = ERR_reason_error_string(19);,程序崩溃。我究竟做错了什么?

请使用函数X509_verify_cert_error_string来获取与OpenSSL中的证书验证相关的错误。 ERR_error_string为其他SSL lib相关错误提供错误字符串,而不是用于证书验证失败的特定错误。

至于崩溃,没有原因代码映射到值19.所有SSL错误原因代码从100开始。所以,ERR_reason_error_string必须返回NULL,这会导致您的代码崩溃。