wolfSSLは、クライアントとしてOCSP (Online Certificate Status Protocol、オンライン証明書ステータスプロトコル) [https://tools.ietf.org/html/rfc2560]を、また、OCSP Stapling version 1 [https://tools.ietf.org/html/rfc6066#section-8]および2 [https://tools.ietf.org/html/rfc6961]をサポートしています。OCSPは、CRL(Certificate Revocation Lists、証明書失効リスト)の代替となるものです。CRLは、一時的または永続的に信頼すべきではない証明書のリストです。CRLの大きな欠点は、これらのリストが広く伝わるのに時間がかかることです。CRLは認証局(CA)から定期的に発行されるため、最大で1週間かかることがあります[https://tools.ietf.org/html/rfc5280#section-3.3]。OCSPを使用すると、クライアントはOCSPレスポンダーを使用してサーバー証明書の有効性を検証し、証明書を信頼するかどうかをリアルタイムで知ることができます。
OCSPステープリングは、証明書のステータス情報を受信するようにサーバーに指示する、クライアントが送るTLS拡張です。ステープリングは、接続を確立するために必要な帯域幅とラウンドトリップを大幅に削減します。TLSサーバーは、クライアントから証明書ステータス要求拡張機能を受信すると、OCSPレスポンダーに完全なDERエンコードされたOCSP応答を送信します。これにより、クライアントはOCSPレスポンダーに証明書の有効性を問い合わせる必要がなくなり、頻繁にアクセスするサーバーのクライアントから来るOCSPレスポンダーの帯域幅を節約することができます。
OCSPステープリングのバージョン1では、1つの証明書のステータス情報しか送信できないという厳しい制限があります。多くのTLSサーバは、クライアントが中間証明書チェーンを知らない場合に備えて、自身の証明書と一緒に中間証明書を送信することを選択します。OCSPステープリングのバージョン1は、クライアントがサーバの証明書のステータスを確認する手間を省くだけで、中間証明書を確認する手間は省けません。OCSPステープリングのバージョン2では、「サーバー自身の証明書だけでなく、チェーン内の中間証明書のステータス情報を提供する」ことを可能にする新しい拡張機能が定義されています[https://tools.ietf.org/html/rfc6961]。
OCSPをサポートするwolfSSLをコンパイルするには、以下のconfigureオプションを使用します。
OCSP: --enable-ocsp
OCSP stapling: --enable-ocspstapling
OCSP stapling v2: --enable-ocspstapling2
OCSPの利用を可能にするために、wolfSSLでは以下のAPIを用意しています。
int wolfSSL_CTX_EnableOCSP(WOLFSSL_CTX*, int options); int wolfSSL_CTX_DisableOCSP(WOLFSSL_CTX*); int wolfSSL_CTX_SetOCSP_OverrideURL(WOLFSSL_CTX*, const char*); int wolfSSL_CTX_SetOCSP_Cb(WOLFSSL_CTX*, CbOCSPIO, CbOCSPRespFree, void*); int wolfSSL_CTX_EnableOCSPStapling(WOLFSSL_CTX*); int wolfSSL_CTX_DisableOCSPStapling(WOLFSSL_CTX*); int wolfSSL_CTX_EnableOCSPMustStaple(WOLFSSL_CTX*); int wolfSSL_CTX_DisableOCSPMustStaple(WOLFSSL_CTX*);
wolfSSLでOCSPを使うには、以下のフローで可能です。
wolfSSL_CTX_EnableOCSP(ctx, 0);
OCSPのステープリングを使用するには:
wolfSSL_CTX_EnableOCSPStapling(ctx); wolfSSL_UseOCSPStapling(ssl, WOLFSSL_CSR_OCSP, 0); wolfSSL_CTX_EnableOCSP(ctx, 0);
OCSPステープリングのバージョン2を使用する場合は:
wolfSSL_CTX_EnableOCSPStapling(ctx); wolfSSL_UseOCSPStaplingV2(ssl, WOLFSSL_CSR2_OCSP*, 0); wolfSSL_CTX_EnableOCSP(ctx, 0);
* 中間証明書のステータス要求情報を提供するには、WOLFSSL_CSR2_OCSP_MULTI
を使用します。
サーバーがOCSPステープリング応答を提供することを許可するには:
wolfSSL_CTX_EnableOCSP(ctx, 0);
カスタムOCSPレスポンダーのURLを提供するには:
wolfSSL_CTX_SetOCSP_OverrideURL(ctx, ocspUrl); wolfSSL_CTX_EnableOCSP(ctx, WOLFSSL_OCSP_URL_OVERRIDE);
OCSPステープリングバージョン2は、非推奨となっているため、TLS 1.3では使用できません[https://tools.ietf.org/html/rfc8446#section-4.4.2.1]。TLS 1.3はOCSPステープリングバージョン1を使用していますが、証明書のステータスは独立したメッセージではありません。対応する証明書の拡張機能として含まれています。
wolfSSLの機能の詳細については、support@wolfssl.com までメールでお問い合わせください。
原文: https://www.wolfssl.com/wolfssl-online-certificate-status-protocol-ocsp-support/