2012-07-18 126 views
1

如何捕獲域名不匹配?捕獲證書域名不匹配openssl

我使用SSL_get_peer_certificate(ssl)來獲得證書,然後SSL_get_verify_result(ssl);來驗證證書。我如何在這裏捕獲域名不匹配,因爲我目前沒有捕獲域名。

回答

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); 

調用X509_NAME_get_index_by_NID再次使用新lastpos將給我們接下來的CN直到它返回-1,說,有沒有更多的CN的可用。

該功能給出X509_NAME_ENTRY *,可以使用ASN1_STRING_to_UTF8將其轉換爲char *

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