2016-12-21 43 views
3

現在、私は、中間およびエンドエンティティ証明書ごとにverify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx)関数でOCSP要求を送信する実装があります。 verify_callback関数は、SSL_CTX_set_verify()関数を使用して設定されます。従来のOCSPとOCSPステープルの両方をクライアント側で処理する方法

今、OCSPステープルを私の実装に追加したいと思います。 OCSPステープルを含める方法については、投稿OpenSSL certificate revocation check in client program using OCSP staplingを見ました。

上記OCSPコールバックを追加したときに発生する問題は、最初のverify_callback()がOCSPホチキス止めのコールバック関数の前に呼び出されるということです。

私の質問は、サーバーからのOCSPステープル応答がない場合、クライアントがOCSP要求を送信するような方法で両方を持つことができます。

verify_callback()機能に到達する前に、OCSPステープルがサポートされているかどうかを確認する方法はありますか?

答えて

0

これは意味があるかどうかわかりません。 OCSPステープルのポイントは、応答が最初のTLSハンドシェイクに追加されるということです。 Wikipedia。したがって、TLSハンドシェイクの有効性は、その内容を評価する前に確立されなければならない。その結果、OpenSSLは最初にverify_callback()をトリガしてハンドシェイク自体を検証し、(ハンドシェイクが有効であると判明した場合のみ)OCSPコールバック関数をトリガして、ハンドシェイクに含まれる追加データを検証させます。

TLSハンドシェイクが失敗した場合、どうして伝統的なOCSP要求を提出する必要がありますか?

OCSP要求を第三者に手動で提出することを強く要求する場合は、TLSハンドシェイクが完了した後に行う必要があります(おそらく、その接続でさらにデータを送信したり受信したデータを処理する前に行う必要があります)。または、事前に証明書を知っていれば、リモートサーバーに接続しようとする前に、このワークフローでOCSPステープルを使用する必要はありません。

関連する問題