捕获证书域名不匹配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的通配符