2.3. NGINX Web サーバーへの TLS 暗号化の追加
example.com
ドメインの NGINX Web サーバーで TLS 暗号化を有効にすることができます。
前提条件
- NGINX がインストールされている。
秘密鍵が
/etc/pki/tls/private/example.com.key
ファイルに保存されている。秘密鍵および証明書署名要求 (CSR) を作成する方法と、認証局 (CA) からの証明書を要求する方法は、CA のドキュメントを参照してください。
-
TLS 証明書は
/etc/pki/tls/certs/example.com.crt
ファイルに保存されます。別のパスを使用する場合は、この手順で対応する手順を調整します。 - CA 証明書がサーバーの TLS 証明書ファイルに追加されている。
- クライアントおよび Web サーバーは、サーバーのホスト名を Web サーバーの IP アドレスに対して解決します。
-
ポート
443
が、ローカルのファイアウォールで開放されている。 - サーバーが RHEL 9.2 以降を実行し、FIPS モードが有効になっている場合、クライアントが Extended Master Secret (EMS) 拡張機能をサポートしているか、TLS 1.3 を使用している必要があります。EMS を使用しない TLS 1.2 接続は失敗します。詳細は、ナレッジベースの記事 TLS extension "Extended Master Secret" enforced を参照してください。
手順
/etc/nginx/nginx.conf
ファイルを編集し、設定のhttp
ブロックに以下のserver
ブロックを追加します。server { listen 443 ssl; server_name example.com; root /usr/share/nginx/html; ssl_certificate /etc/pki/tls/certs/example.com.crt; ssl_certificate_key /etc/pki/tls/private/example.com.key; }
オプション: RHEL 9.3 以降では、
ssl_pass_phrase_dialog
ディレクティブを使用して、暗号化された秘密鍵ごとにnginx
の起動時に呼び出される外部プログラムを設定できます。次の行のいずれかを/etc/nginx/nginx.conf
ファイルに追加します。暗号化された秘密キーファイルごとに外部プログラムを呼び出すには、次のように入力します。
ssl_pass_phrase_dialog exec:<path_to_program>;
NGINX は、次の 2 つの引数を使用してこのプログラムを呼び出します。
-
server_name
設定で指定されたサーバー名。 -
次のアルゴリズムのいずれか:
RSA
、DSA
、EC
、DH
、またはUNK
(暗号アルゴリズムが認識できない場合)。
-
暗号化された秘密キーファイルごとにパスフレーズを手動で入力する場合は、次のように入力します。
ssl_pass_phrase_dialog builtin;
これは、
ssl_pass_phrase_dialog
が設定されていない場合のデフォルトの動作です。注記この方法を使用しても、少なくとも 1 つの秘密キーがパスフレーズで保護されている場合、
nginx
サービスは起動に失敗します。この場合は、他のいずれかの方法を使用してください。systemctl
ユーティリティーを使用してnginx
サービスを開始するときに、systemd
で暗号化された秘密キーごとにパスフレーズの入力を求めるプロンプトを表示するには、次のように入力します。ssl_pass_phrase_dialog exec:/usr/libexec/nginx-ssl-pass-dialog;
セキュリティー上の理由から、
root
ユーザーのみが秘密鍵ファイルにアクセスできるように設定します。# chown root:root /etc/pki/tls/private/example.com.key # chmod 600 /etc/pki/tls/private/example.com.key
警告秘密鍵に権限のないユーザーがアクセスした場合は、証明書を取り消し、新しい秘密鍵を作成し、新しい証明書を要求します。そうでない場合は、TLS 接続が安全ではなくなります。
nginx
サービスを再起動します。# systemctl restart nginx
検証手順
-
ブラウザーを使用して、
https://example.com
に接続します。