int verify_err = SSL_get_verify_result(client.ssl);
拿到非X509_V_OK结果后,需由客户端/服务端应用层来决定是否中止TLS流程,
在一些场景下,openSSL库并不会通过Alert Message来反馈证书验证失败的结果,具体如下:
- 场景1:当服务端只发送合法的用户证书时,客户端设置根证书和二级证书:
r = SSL_CTX_load_verify_locations(k->ctx, "/data/user/0/cn.areful.openssl/files/TEST Root CA.pem", NULL); //根证书
r = SSL_CTX_load_verify_locations(k->ctx, "/data/user/0/cn.areful.openssl/files/TEST USER CA.pem", NULL); //二级证书
verify_err = X509_V_OK
- 场景2:当服务端只发送合法的用户证书时,客户端仅设置根证书或者未设置根证书及二级证书:
verify_err = X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE - 场景3:当服务端只发送合法的用户证书时,客户端仅设置二级证书:
verify_err = X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT - 场景4:当服务端只发送过期的用户证书时,客户端仅设置根证书:
verify_err = X509_V_ERR_CERT_HAS_EXPIRED - 场景5&#