2012-06-22 186 views

回答

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可用。

此函数给出X509_NAME_ENTRY *,其可以使用ASN1_STRING_to_UTF8被转换为char *

一定要考虑SAN和CN的通配符