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 を参照してください。

手順

  1. /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;
    }
  2. オプション: RHEL 9.3 以降では、ssl_pass_phrase_dialog ディレクティブを使用して、暗号化された秘密鍵ごとに nginx の起動時に呼び出される外部プログラムを設定できます。次の行のいずれかを /etc/nginx/nginx.conf ファイルに追加します。

    • 暗号化された秘密キーファイルごとに外部プログラムを呼び出すには、次のように入力します。

      ssl_pass_phrase_dialog exec:<path_to_program>;

      NGINX は、次の 2 つの引数を使用してこのプログラムを呼び出します。

      • server_name 設定で指定されたサーバー名。
      • 次のアルゴリズムのいずれか: RSADSAECDH、または 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;
  3. セキュリティー上の理由から、root ユーザーのみが秘密鍵ファイルにアクセスできるように設定します。

    # chown root:root /etc/pki/tls/private/example.com.key
    # chmod 600 /etc/pki/tls/private/example.com.key
    警告

    秘密鍵に権限のないユーザーがアクセスした場合は、証明書を取り消し、新しい秘密鍵を作成し、新しい証明書を要求します。そうでない場合は、TLS 接続が安全ではなくなります。

  4. nginx サービスを再起動します。

    # systemctl restart nginx

検証手順

  • ブラウザーを使用して、https://example.com に接続します。