1

ドメイン名の不一致を見つけるにはどうすればよいですか?

SSL_get_peer_certificate(ssl)は証明書を取得し、次に証明書SSL_get_verify_result(ssl);を検証するために使用します。現在ドメイン名の不一致を検出していないので、ここでドメイン名の不一致を検出するにはどうすればよいですか。

4

1 に答える 1

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 *するように変換できるを提供します。char *ASN1_STRING_to_UTF8

SANおよびCNに含まれるワイルドカードを必ず考慮してください。

于 2012-08-10T08:56:18.480 に答える