從顯示功能「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的通配符