すべてのプロダクト
Search
ドキュメントセンター

Certificate Management Service:NGINX サーバーまたは Tengine サーバーへの SSL 証明書のインストール

最終更新日:Feb 27, 2025

このトピックでは、証明書ファイルのダウンロードとアップロード、サーバーに必要なパラメーターの構成、インストール結果の確認など、NGINX サーバーまたは Tengine サーバーに SSL 証明書をインストールする方法について説明します。パラメーターには、証明書ファイル、証明書チェーン、および証明書キーが含まれます。証明書がインストールされると、HTTPS 経由でサーバーにアクセスできます。

重要
  • このトピックでは、64 ビット CentOS 8.0 オペレーティングシステムを実行する NGINX 1.14.2 サーバーを例として使用して、インストールについて説明します。インストール操作は、サーバーとオペレーティングシステムのバージョンによって異なります。ご質問がある場合は、アカウントマネージャーにお問い合わせください.

  • Alibaba Cloud Elastic Compute Service (ECS) インスタンスを使用する場合は、セキュリティ グループECS コンソール の [セキュリティグループ] ページでポート 443 を許可する必要があります。そうしないと、Web サイトへのアクセス時に例外が発生する可能性があります。詳細については、「セキュリティグループルールの追加」をご参照ください。

  • このトピックでは、cert-file-name という名前の証明書を例として使用して、インストールについて説明します。証明書ファイルの名前は cert-file-name.pem、秘密鍵ファイルの名前は cert-file-name.key です。実際のインストールでは、cert-file-name を証明書の名前に置き換える必要があります。

前提条件

  • 証明書は、Certificate Management Service コンソールを使用して発行されます。詳細については、「SSL 証明書の購入」および「証明書の申請」をご参照ください。

  • 証明書にバインドされているドメイン名で、ドメインネームシステム (DNS) 解決が完了しています。ドメイン名は正しく IP アドレスに解決されます。DNS 検証ツールを使用して、ドメイン名の DNS レコードが有効になっているかどうかを確認できます。ツールを使用するには、Certificate Management Service コンソールにログインし、左側のナビゲーションウィンドウで [共通証明書ツール] > [DNS 設定の検証] を選択します。詳細については、「ドメイン名の DNS レコードの検証」をご参照ください。

  • Web サーバーでポート 443 が有効になっています。ポート 443 は、HTTPS 通信に使用される標準ポートです。

    • Alibaba Cloud Elastic Compute Service (ECS) インスタンスを使用する場合は、ポート 443 での TCP アクセスを許可するようにセキュリティグループのインバウンドルールが構成されていることを確認してください。詳細については、「セキュリティグループルールの追加」をご参照ください。

    • サードパーティのクラウドサーバーまたはオンプレミスサーバーを使用する場合は、TCP アクセスを許可するために、ファイアウォールまたはセキュリティグループでポート 443 が有効になっていることを確認してください。

  • 証明書がインストールされている Web サイトを中国本土にあるサーバーにデプロイする場合、工業情報化部 (MIIT) の要件に従って、証明書にバインドされているドメイン名のインターネットコンテンツプロバイダー (ICP) 登録を完了する必要があります。そうしないと、Web サイトにアクセスできません。詳細については、「ICP 登録とは」をご参照ください。

手順 1: 証明書をダウンロードする

  1. Certificate Management Service コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[証明書管理] > SSL 証明書管理 を選択します。

  3. SSL 証明書管理 ページで、管理する証明書を見つけ、詳細操作 列の ダウンロード をクリックします。表示されるページで、 タブをクリックします。

  4. サーバータイプ 列で Nginx を見つけ、ダウンロード操作 列でクリックします。

    image..png

  5. ダウンロードした証明書パッケージを解凍します。

    次の表は、パッケージから抽出できるファイルについて説明しています。 ファイルは、証明書アプリケーションの送信時に使用する証明書署名要求 ( CSR ) の生成方法によって異なります。in

    CSR 生成パラメーターの値

    証明書パッケージから抽出されたファイル

    システム生成

    • PEM 形式の証明書ファイル: NGINX サーバーは PEM ファイルをサポートしています。 PEM 形式の証明書ファイルは、完全な証明書チェーンを含む Base64 エンコードされたテキストファイルです。 展開後のファイル名は、証明書 ID_証明書にバインドされたドメイン名 形式です。

    • KEY 形式の秘密鍵ファイル: デフォルトでは、秘密鍵ファイルの名前は 証明書にバインドされたドメイン名 形式です。

    手動で入力する

    • SSL Certificates Service コンソールで作成された CSR を指定した場合、ダウンロードした証明書パッケージから抽出される証明書ファイルは、[CSR 生成] パラメーターを システム生成 に設定した場合に取得される証明書ファイルと同じです。

    • SSL Certificates Service コンソールで作成されていない CSR を指定した場合、ダウンロードした証明書パッケージからは PEM 証明書ファイルのみを抽出できます。 パスワードファイルまたは秘密鍵ファイルは抽出できません。 証明書ツールキットを使用して、証明書ファイル、パスワードファイル、または秘密鍵ファイルを必要な形式に変換できます。 証明書形式の変換方法の詳細については、「証明書の形式を変換する」をご参照ください。

手順 2: NGINX サーバーに証明書をインストールする

  1. 次のコマンドを実行して、NGINX サーバーの conf ディレクトリに証明書を格納するディレクトリを作成します。

    cd /usr/local/nginx/conf  # NGINX サーバーのデフォルトの構成ファイルディレクトリに移動します。このディレクトリは、NGINX を手動でコンパイルしてインストールする場合に使用されます。デフォルトの NGINX インストールディレクトリを変更した場合、または他の方法で NGINX をインストールした場合は、実際のディレクトリを指定してください。
    mkdir cert  # cert という名前のディレクトリを作成します。
  2. 証明書ファイルと秘密鍵ファイルを NGINX サーバーの次のディレクトリにアップロードします: /usr/local/nginx/conf/cert

    説明

    PuTTY、Xshell、WinSCP などのリモートログインツールのファイルアップロード機能を使用してファイルをアップロードできます。Alibaba Cloud Elastic Compute Service (ECS) インスタンスにファイルをアップロードする方法の詳細については、「リモートデスクトップ接続または Windows アプリを使用して Windows インスタンスにファイルを転送する」または「Linux インスタンスにファイルをアップロードする」をご参照ください。

  3. NGINX サーバーの nginx.conf 構成ファイルを開き、ファイル内の証明書関連の設定を変更します。

    1. 次のコマンドを実行して、構成ファイルを開きます。

      vim /usr/local/nginx/conf/nginx.conf
      重要

      デフォルトでは、nginx.conf 構成ファイルは /usr/local/nginx/conf ディレクトリに格納されています。nginx.conf 構成ファイルを別の場所に移動した場合は、nginx -t コマンドを実行して構成ファイルの新しいパスを取得し、/usr/local/nginx/conf/nginx.conf を新しいパスに置き換えることができます。

    2. nginx.conf 構成ファイルで HTTPS サーバー設定項目を見つけます

      image..png

      説明

      nginx.conf 構成ファイル、または include ディレクティブによって参照されるファイルに server 設定項目が含まれていない場合は、server 設定項目を手動で追加します。

    3. 各行の先頭から # コメント記号を削除し、次のサンプルコードに基づいて設定を変更します。

      server {
           # デフォルトの HTTPS ポート 443 を指定します。
           # デフォルトの HTTPS ポートを指定しないと、NGINX サービスが起動に失敗する可能性があります。
           listen 443 ssl;
           
           # 証明書にバインドされているドメイン名を入力します。
           server_name <YOURDOMAIN>;
       
           # 証明書ファイルへの絶対パスを入力します。
           ssl_certificate cert/<cert-file-name>.pem;
           # 秘密鍵ファイルへの絶対パスを入力します。
           ssl_certificate_key cert/<cert-file-name>.key;
       
           ssl_session_cache shared:SSL:1m;
           ssl_session_timeout 5m;
      	 
           # 使用するトランスポート層セキュリティ (TLS) プロトコルとカスタムの暗号スイートを指定します。次のサンプルコードは参照用です。
           # TLS のバージョンが新しいほどセキュリティは高くなりますが、ブラウザとの互換性は低くなります。
           ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
           ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
      
           # サーバー側の暗号スイートが優先的に使用されます。デフォルト値は on です。
           ssl_prefer_server_ciphers on;
       
       
          location / {
                 root html;
                 index index.html index.htm;
          }
      }
    4. オプション。 HTTP リクエストを HTTPS リクエストに自動的にリダイレクトするように設定を構成します。

      すべての HTTP リクエストを HTTPS リクエストにリダイレクトする場合は、構成ファイルに rewrite ディレクティブを追加できます。

      重要

      nginx.conf 構成ファイルで HTTP サーバーの構成項目を見つけ、リダイレクト設定を追加します。

      構成項目が見つからない場合は、nginx.conf 構成ファイルの server {} 構成項目に次のリダイレクト設定を追加できます。リダイレクト設定を構成した後、nginx.conf ファイルには 2 つの server {} 構成項目が含まれます。

      server {
          listen 80;
          # 証明書にバインドされているドメイン名を入力します。
          server_name <YOURDOMAIN>;
          # すべての HTTP リクエストを HTTPS リクエストにリダイレクトするために、rewrite ディレクティブを追加します。
          rewrite ^(.*)$ https://$host$1;
          location / {
              index index.html index.htm;
          }
      }

      次の図は、構成後の結果を示しています。

      image..png

  4. 次のコマンドを実行して、NGINX サービスを再起動します。

    # NGINX サービスの実行可能ディレクトリに移動します。
    cd /usr/local/nginx/sbin
    # 構成ファイルを再読み込みします。
    ./nginx -s reload
    説明
    • the "ssl" parameter requires ngx_http_ssl_module というエラーが報告された場合は、NGINX を再コンパイルし、NGINX をインストールするときに --with-http_ssl_module を追加します。

    • "/cert/3970497_demo.aliyundoc.com.pem":BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/cert/3970497_demo.aliyundoc.com.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file) というエラーが報告された場合は、証明書ファイルへの相対パスの前にあるスラッシュ (/) を削除します。たとえば、相対パス /cert/cert-file-name.pem の前にあるスラッシュ (/) を削除します。必要な相対パスは cert/cert-file-name.pem です。

手順 3: 証明書がインストールされているかどうかを確認する

証明書をインストールした後、証明書にバインドされているドメイン名にアクセスして、証明書がインストールされているかどうかを確認できます。

https://yourdomain   # yourdomain を証明書にバインドされているドメイン名に置き換えます。

アドレスバーに南京錠アイコンが表示されている場合は、証明書がインストールされています。

image..png

参考資料