如何捕获域名不匹配?
我SSL_get_peer_certificate(ssl)
用来获取证书,然后SSL_get_verify_result(ssl);
验证证书。我如何在此处捕获域名不匹配,因为我目前没有捕获它。
如何捕获域名不匹配?
我SSL_get_peer_certificate(ssl)
用来获取证书,然后SSL_get_verify_result(ssl);
验证证书。我如何在此处捕获域名不匹配,因为我目前没有捕获它。
SSL_get_verify_result
不进行主机名不匹配搜索。我们必须手动考虑证书中的多个 CN 和主题备用名称 (SAN)。
可用于处理多个 CN 的函数是:
int lastpos = -1;
lastpos=X509_NAME_get_index_by_NID(X509_get_subject_name(cert), NID_commonName, lastpos);
X509_NAME_get_entry(X509_get_subject_name(cert), lastpos);
使用新的 lastpos 再次调用X509_NAME_get_index_by_NID
将给我们下一个 CN,直到它返回 -1 表示没有更多可用的 CN。
此函数给出 a X509_NAME_ENTRY *
,可以转换为char *
using ASN1_STRING_to_UTF8
。
请务必考虑 SAN 和 CN 中的通配符