1

如何捕获域名不匹配?

SSL_get_peer_certificate(ssl)用来获取证书,然后SSL_get_verify_result(ssl);验证证书。我如何在此处捕获域名不匹配,因为我目前没有捕获它。

4

1 回答 1

0

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 中的通配符

于 2012-08-10T08:56:18.480 回答