NGINX には次の 2 つの設定があります。
ssl_stapling on;
ssl_stapling_verify on;
以前は動作していたのですが、OS を再インストールしたら動作しなくなりました。何が問題なのか疑問に思っています。また、MITM タイプのシナリオでは、ssl_stapling と ssl_stapling_verify はどのような種類の攻撃から保護しますか? 何かから保護する攻撃がある場合、攻撃の効果を軽減するにはどうすればよいでしょうか?
答え1
SSL ステープリングとは、サーバー証明書に関する失効情報 (つまり OCSP 応答) が、サーバー証明書とともに TLS ハンドシェイクに含まれることを意味します。これは、追加の OCSP 要求が必要ない (いずれにしても、ブラウザーは通常 OCSP 要求を必要としません) という点で、現在のところトラフィックの最適化に重点が置かれています。
ブラウザが OCSP 応答を固定化することを主張する場合、これはセキュリティ機能になります。この場合、一部の MITM がドメインの失効した証明書を使用してトラフィックをハイジャックし、OCSP 要求/応答をブロックすることを防ぎます。ブラウザは OCSP クエリが失敗すると諦めることが多いため、この攻撃は有効です。しかし、ほとんどのブラウザは実際には OCSP をまったく使用しておらず、代わりに代替の (さらに信頼性の低い) メカニズムを使用しています - を参照してください。ブラウザは失効した SSL/TLS 証明書をどのように処理しますか?。
OCSP ステープルを使用する要件は、証明書自体のプロパティである可能性があります (OCSP-must-staple 拡張)。つまり、そのような証明書を持っていても OCSP 応答をステープルしていない場合は、失敗する可能性があります。
答え2
証明書には、失効したことを示す CRL リストがあります。ステープルは、これを行うための別の方法です。これを有効にする場合、証明書の発行者もこの機能をサポートしている必要があります。nginx での設定方法について説明したリンクを以下に添付しました。
https://www.digicert.com/kb/ssl-support/nginx-enable-ocsp-stapling-on-server.htm
これまで読んだところによると、ステープル処理によって MITM が防止されるわけではないようです。証明書が有効で、期限切れまたは取り消されていないかどうかを確認する方法が変わるだけです。