ドメイン名の不一致を見つけるにはどうすればよいですか?
私SSL_get_peer_certificate(ssl)
は証明書を取得し、次に証明書SSL_get_verify_result(ssl);
を検証するために使用します。現在ドメイン名の不一致を検出していないので、ここでドメイン名の不一致を検出するにはどうすればよいですか。
ドメイン名の不一致を見つけるにはどうすればよいですか?
私SSL_get_peer_certificate(ssl)
は証明書を取得し、次に証明書SSL_get_verify_result(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 *
するように変換できるを提供します。char *
ASN1_STRING_to_UTF8
SANおよびCNに含まれるワイルドカードを必ず考慮してください。