Nginx は、効率性と安定性で人気のある高性能 Web サーバーおよびリバース プロキシ サーバーです。今日のインターネット アプリケーションでは、SSL/TLS プロトコルはデータ送信のセキュリティを確保するために不可欠な手段となっています。この記事では、Nginx が SSL/TLS プロトコルを最適化する方法を紹介し、SSL/TLS セキュリティ実践の実装方法を探ります。
1. SSL/TLS プロトコルの最適化
SSL/TLS プロトコルは、ネットワーク伝送のセキュリティを確保するために使用されるプロトコルです。 Web アプリケーションで一般的に使用される SSL/TLS 実装には、OpenSSL、GnuTLS、および NSS が含まれます。 Nginxを利用する場合、SSL/TLSのパフォーマンスをいかに最適化するかが非常に重要です。
TLS プロトコルは SSL プロトコルのアップグレードされたバージョンであり、より安全であるだけでなく、高速でもあります。 Nginx では、ssl_protocols パラメーターを設定することで SSL/TLS プロトコルのバージョンを指定できます。 SSL v3 に対する POODLE 攻撃を防ぐために、TLS v1.2 以降を使用し、古い SSL v3 バージョンを無効にすることをお勧めします。
以下は設定例です:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
より安全な暗号化アルゴリズムを選択すると、SSL/TLS プロトコルのセキュリティを強化できます。 Nginx では、ssl_ciphers パラメータを設定することで暗号化アルゴリズムを選択できます。暗号化アルゴリズム文字列をカスタマイズして、より安全な暗号化方法を選択することもできます。
以下は設定例です:
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE- RSA -CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256: ECDHE -RSA-AES128-SHA256;
ssl_prefer_server_ciphers on;
セッション キャッシュにより、SSL/TLS ハンドシェイクの数が減り、ハンドシェイクの効率が向上します。 。 Nginx では、ssl_session_cache パラメータを設定することでセッション キャッシュをオンにできます。同時に、ssl_session_timeout パラメータを設定してセッション キャッシュの有効期限を指定し、期限切れのセッションによるメモリの浪費を避けることができます。
以下は設定例です:
ssl_session_cache 共有:SSL:10m;
ssl_session_timeout 10m;
OCSP Stapling を有効にすると、SSL/TLS のセキュリティを強化できます。 OCSP Stapling は、Web サーバーが SSL/TLS ハンドシェイク中に証明機関 (CA) によって署名された証明書ステータス情報を提供できるメカニズムです。これにより、クライアントが更新された証明書ステータスを得るために OCSP サーバーに問い合わせる必要がなくなり、セキュリティとパフォーマンスが向上します。
Nginx では、ssl_stapling パラメータを設定することで OCSP Stapling を有効にできます。同時に、ssl_stapling_verify パラメータを設定して、OCSP 応答のチェック レベルを指定できます。
次は設定例です:
ssl_stapling on;
ssl_stapling_verify on;
2. SSL/TLS プロトコルのセキュリティ実践
SSL / TLSプロトコル自体は高いセキュリティを持っています。ただし、Nginx サーバーとクライアントが SSL/TLS プロトコルを正しく使用しない場合、攻撃やデータ漏洩に対して脆弱になる可能性があります。したがって、SSL/TLS プロトコルを使用する場合は、いくつかのセキュリティ慣行に注意する必要があります。
オペレーティング システムとソフトウェア パッチを定期的に更新し、最新の TLS バージョンを使用して、SSL/TLS プロトコルの脆弱性の悪用を減らします。そうしないと、攻撃者が脆弱性を悪用してサーバーに対して悪意のある攻撃を実行する可能性があります。
HTTP Strict Transport Security (HSTS) を有効にすると、クライアントが同じドメイン名から Web アプリケーションにアクセスするときに、常に HTTPS 暗号化接続が使用されるようになります。これにより、MiTM 攻撃 (中間者攻撃) が減少し、ユーザーの保護レベルが向上します。
Nginx では、次のコードを追加して HSTS を構成できます:
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
This HSTS が有効になり、サブドメインを含めて最大有効期間が 2 年に設定されます。
フロント プロキシで HTTPS 暗号化接続を使用する場合、HSTS はログイン詳細スキーム (steal-login-details-scheme) を防ぐことができます。攻撃。ログイン詳細スキームは、ホワイトリストに登録するか不要なサブドメインを追加することでユーザーのログイン詳細を盗み、ユーザーをだましてリンクをクリックさせ、HTTPS ではなく HTTP を使用させる攻撃です。
Nginx を使用する場合は、セキュリティ プロトコルによって検証および認証された証明書署名を使用する必要があります。そうしないと、攻撃者がそれを使用してデータを盗む可能性があります。 MD5 などの古いプロトコルに関連付けられた署名アルゴリズムの使用は避けてください。
SSL/TLS プロトコルの拡張により、より効率的で安全な Nginx サーバーを実現できます。 SSL/TLS プロトコルをサポートする Nginx サーバーを使用すると、Web アプリケーションのセキュリティとパフォーマンスを大幅に向上させることができます。 SSL/TLS を使用する前に、上記の推奨事項とセキュリティ慣行を必ず念頭に置いてください。
以上がNginx SSL/TLS プロトコルの最適化とセキュリティの実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。