것은

2012-07-12 2 views
1

하려면 openssl에서, 나는 코드를 사용하는 인증서의 errorno를 얻을 수 있습니다 :것은

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);, 프로그램이 충돌합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

1

X509_verify_cert_error_string 함수를 사용하여 OpenSSL에서 인증서 확인과 관련된 오류를 확인하십시오. ERR_error_string은 인증서 확인 실패 특정 오류가 아닌 다른 SSL lib 관련 오류에 대한 오류 문자열을 제공합니다.

크래시는 값 19로 매핑되는 이유 코드가 없습니다. 모든 SSL 오류 이유 코드는 100부터 시작됩니다. 따라서 ERR_reason_error_string은 NULL을 반환해야 코드가 충돌합니다.