TLS OpenSSL 证书验证
程序员文章站
2022-03-06 18:58:16
...
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:当服务端发送证书链(包括根证书,二级证书,用户证书)时,客户端未设置根证书及二级证书:
verify_err = X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN - 场景6:当服务端只发送经过篡改签名数据或者篡改时间的用户证书时,客户端设置根证书和二级证书:
verify_err = X509_V_ERR_CERT_SIGNATURE_FAILURE
且在客户端发完证书后,收到服务端发来的Alert Message:15030300020233 - 场景7:当服务端只发送经过篡改公钥数据的用户证书时,客户端设置根证书和二级证书:
verify_err = X509_V_ERR_CERT_SIGNATURE_FAILURE
且收到客户端发来的Alert Message:15030300020233
推荐阅读
-
安装FLASH player 播放器时出现证书验证失败
-
基于 TrueLicense 的项目证书验证
-
挑选优惠域名验证型SSL证书 到必盛互联
-
如何在linux系统内用openssl 生成 过期的证书
-
Linux中Nginx中添加自签证书TLS
-
用openssl为WEB服务器生成证书(自签名CA证书,服务器证书)
-
Linux下OpenSSL客户端中使用req命令来生成证书的教程
-
解决docker的tls(ssl)证书过期问题
-
Windows Server 2008 R2 下配置TLS1.2添加自签名证书的图文教程
-
开启OCSP提升https证书验证效率解决Let’s Encrypt SSL证书访问慢的问题