10

SSL_CTX_set_cert_verify_callback と SSL_CTX_set_verify の違いは何ですか? OpenSSL ドキュメントから:

SSL_CTX_set_cert_verify_callback() は、ctx の検証コールバック関数を設定します。ctx から作成された SSL オブジェクトは、SSL_new(3) が呼び出された時点で有効な設定を継承します。

と:

SSL_CTX_set_verify() は、ctx の検証フラグをモードに設定し、使用する verify_callback 関数を指定します。コールバック関数を指定しない場合は、verify_callback に NULL ポインターを使用できます。

そのため、(クライアント側から) それぞれに対して送信するコールバックを理解しようとしています。

専門家に感謝します。

4

2 に答える 2

10

SSL_CTX_set_cert_verify_callback() は、検証プロセス全体を実行する関数を指定していることを意味します (各証明書を順番に検証する証明書チェーンをたどります)。[以下の警告に従って、おそらくこれを行いたくないでしょう]

一方、SSL_CTX_set_verify() は、デフォルトのバリデーターが各証明書をチェックするときに呼び出される関数を指定し、問題の証明書の検証が機能したかどうかを示すために preverify_ok を 0 または 1 に設定します。

SSL_CTX_set_cert_verify_callback() のドキュメントから

警告

この関数で説明されている検証コールバックと、検証プロセス中に呼び出される verify_callback 関数を混在させないでください。後者は、SSL_CTX_set_verify(3) 関数ファミリーを使用して設定されます。

証明書の目的設定などを含む完全な検証手順を提供することは、複雑な作業です。組み込みプロシージャは非常に強力で、ほとんどの場合、verify_callback 関数を使用してその動作を変更するだけで十分です。

于 2010-04-28T12:27:14.593 に答える
3

SSL_CTX_set_cert_verify_callback()は、デフォルトの証明書検証関数を変更します。あなたはおそらくこれをすべきではありません。これは非常に複雑です。各証明書の署名を確認し、チェーンを確認し、場合によってはCRLを確認する必要があります。これはSSLの最も複雑な部分です。

SSL_CTX_set_verify()は、SSLのモードを設定するために使用されます。モードがSSL_VERIFY_PEER(双方向SSL)の場合は、この関数でコールバックを設定して、クライアント証明書をさらに検証する必要があります(CNをホワイトリストと照合するなど)。他のモードでは、このCBは使用されません。クライアントモードであると言ったので、おそらくこの呼び出しについて心配する必要はありません。

于 2010-04-28T12:43:22.767 に答える