从这里为函数“”提供的开放 ssl 文档SSL_get_verify_result
:
http ://www.openssl.org/docs/ssl/SSL_get_verify_result.html
它指出这里给出了错误:
http ://www.openssl.org/docs /apps/verify.html
那么,如果存在 SSL 主机不匹配错误,将调用这些错误中的哪一个?即证书中的主机名和请求中的主机名不同?
还有哪些错误实际上可以安全忽略?
从这里为函数“”提供的开放 ssl 文档SSL_get_verify_result
:
http ://www.openssl.org/docs/ssl/SSL_get_verify_result.html
它指出这里给出了错误:
http ://www.openssl.org/docs /apps/verify.html
那么,如果存在 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 中的通配符