捕获证书域名不匹配openssl

问题描述:

如何捕获域名不匹配?捕获证书域名不匹配openssl

我使用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); 

调用X509_NAME_get_index_by_NID再次使用新lastpos将给我们接下来的CN直到它返回-1,说,有没有更多的CN的可用。

该功能给出X509_NAME_ENTRY *,可以使用ASN1_STRING_to_UTF8将其转换为char *

一定要考虑SAN和CN的通配符