Nginx は、Web サーバー、ロード バランサー、リバース プロキシ、キャッシュで広く使用されているソフトウェアです。ネットワーク伝送において、データの暗号化とセキュリティに対する注目が高まっています。通信のセキュリティを向上させるために、OpenSSL ライブラリを使用して SSL/TLS プロトコルを実装し、機密データの送信を保護できます。この記事では、Nginx と OpenSSL ライブラリを使用して、より安全な通信を実現する方法について説明します。
まず、OpenSSL ライブラリをサーバーにインストールする必要があります。パッケージ マネージャーを使用してインストールできます。たとえば、Ubuntu および Debian システムの場合は、次のコマンドを使用できます:
sudo apt-get install libssl-dev
インストールが完了したら、Nginx 構成で関連する設定を行います。 ssl 証明書のパスとキーのパスが対応するファイルを指すようにする必要があります。同時に、SSL プロトコルと関連するセキュリティ最適化設定も有効にする必要があります。
server { listen 443 ssl http2; server_name example.com; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; #优化SSL加密方式 ssl_protocols TLSv1.3; ssl_ciphersuites TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256; ssl_prefer_server_ciphers on; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; #提高安全性 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload;" always; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Xss-Protection "1; mode=block"; #其他配置 location / { ... } }
上記の設定では、「listen」コマンドを使用して SSL プロトコルを有効にし、http2 プロトコルをロードしてセキュリティを改善します。効率。 「ssl_certificate」と「ssl_certificate_key」は、対応する証明書へのパスです。さらに、暗号化アルゴリズムやセッションタイムアウトなどの設定も必要です。
セキュリティを向上させるために、「Strict-Transport-Security」、「X-Content-Type-Options」、「X-Frame-Options」、「」などの HTTP 応答ヘッダーを追加することもできます。 X-Xss「-Protection」など、悪意のある攻撃からサイトを保護します。
SSL 証明書は、通信のセキュリティを保護するための重要なツールです。通常、認証局 (CA) に申請して SSL 証明書を取得できます。ただし、テストまたはプライベート Web サイトで使用するために、自己署名 SSL 証明書を自分で生成することもできます。
Ubuntu および Debian システムでは、次の手順に従って SSL 証明書を生成できます。
1) 証明書とキーを作成します
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
このコマンドは、自己証明書を生成します。 -署名された SSL 証明書と対応する秘密キー。生成プロセス中に、組織単位、パブリック名などの必要な情報を入力するよう求められます。
2) Nginx を構成する
前の構成手順に従い、Nginx 構成で証明書とキー ファイルへのパスを指定します。
server { listen 443 ssl; server_name example.com; ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; ... }
SSL プロトコルに基づく暗号化通信により、サーバーへの負荷とネットワークの遅延が増加します。したがって、通信に SSL プロトコルを使用する場合は、パフォーマンスを最適化する必要があります。
一般的に使用される最適化設定の一部は次のとおりです。
1) SSL アクセラレータをオンにする
SSL アクセラレータは、SSL のハンドシェイク プロセス、暗号化および復号化処理を高速化できます。プロトコルなどOpenSSL エンジン テクノロジーを Nginx で使用すると、ハードウェア アクセラレーションによる SSL 処理を実現できます。特定の選択は実際の状況と組み合わせる必要があります。次の設定に従うことができます:
ssl_engine on; ssl_engine_device /dev/pkcs11engine; ssl_engine_param "/path/to/config.xml";
2) 証明書チェーンをマージ
SSL 証明書とその発行局のルート証明書を次の場所に保存します。同じ証明書ファイルを使用することで、クライアントが証明書を検証する回数とメモリ オーバーヘッドが削減されます:
cat your_domain.crt ca_bundle.crt > your_domain_ca.crt
3) OCSP Stapling をオンにする
OCSP Stapling は、証明書の正当性を検証するために使用される最適化テクノロジです。サーバー証明書。クライアントはサーバー証明書を受け取ると、発行局の OCSP サーバーに検証を要求するため、ネットワーク遅延が増加します。 OCSP Stapling テクノロジは、この遅延を削減し、サーバー側で OCSP 応答をキャッシュし、クライアントが要求したときにそれを直接返すことができるため、ネットワーク遅延と QPST 要求が削減されます。
Nginx では、次のように OCSP Stapling を有効にできます。
server { ... ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /path/to/chain.pem; resolver DNS_SERVER; ... }
最後に、SSL 接続と管理を監視する必要があります。 。 SSL 接続の詳細な監視とログ記録には、Nginx が提供する SSL 拡張モジュール ngx_http_ssl_module を使用できます。
SSL インジケーターの監視と警告には Prometheus、SSL ログと統計分析には ELK など、他の監視ツールと組み合わせることができます。
結論
この記事では、OpenSSL ライブラリを使用してより安全な通信を実現する方法を紹介しました。 SSL証明書、暗号化アルゴリズム、最適化設定、監視管理を設定することで、通信のセキュリティとパフォーマンスを大幅に向上させることができます。同時に、ウェブサイトとデータを保護するために、最新の SSL セキュリティ技術に引き続き注意を払い、学習する必要があります。
以上がNginx がより安全な通信のために OpenSSL ライブラリを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。