0

从这里为函数“”提供的开放 ssl 文档SSL_get_verify_resulthttp ://www.openssl.org/docs/ssl/SSL_get_verify_result.html 它指出这里给出了错误: http ://www.openssl.org/docs /apps/verify.html

那么,如果存在 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:55:07.420 回答