从显示功能“SSL_get_verify_result
”这里的开放式SSL文件: 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
”这里的开放式SSL文件: 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不执行主机名不匹配搜索。我们必须手动考虑证书中包含的多个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可用。
此函数给出X509_NAME_ENTRY *
,其可以使用ASN1_STRING_to_UTF8
被转换为char *
。
一定要考虑SAN和CN的通配符