このトピックでは、証明書ファイルのダウンロードとアップロード、サーバーに必要なパラメーターの構成、インストール結果の確認など、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: 証明書をダウンロードする
Certificate Management Service コンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
SSL 証明書管理 ページで、管理する証明書を見つけ、詳細操作 列の ダウンロード をクリックします。表示されるページで、 タブをクリックします。
サーバータイプ 列で Nginx を見つけ、ダウンロード を 操作 列でクリックします。
ダウンロードした証明書パッケージを解凍します。
次の表は、パッケージから抽出できるファイルについて説明しています。 ファイルは、証明書アプリケーションの送信時に使用する証明書署名要求 ( CSR ) の生成方法によって異なります。
CSR 生成パラメーターの値
証明書パッケージから抽出されたファイル
システム生成
PEM 形式の証明書ファイル: NGINX サーバーは PEM ファイルをサポートしています。 PEM 形式の証明書ファイルは、完全な証明書チェーンを含む Base64 エンコードされたテキストファイルです。 展開後のファイル名は、
証明書 ID_証明書にバインドされたドメイン名
形式です。KEY 形式の秘密鍵ファイル: デフォルトでは、秘密鍵ファイルの名前は 証明書にバインドされたドメイン名 形式です。
手動で入力する
SSL Certificates Service コンソールで作成された CSR を指定した場合、ダウンロードした証明書パッケージから抽出される証明書ファイルは、[CSR 生成] パラメーターを システム生成 に設定した場合に取得される証明書ファイルと同じです。
SSL Certificates Service コンソールで作成されていない CSR を指定した場合、ダウンロードした証明書パッケージからは PEM 証明書ファイルのみを抽出できます。 パスワードファイルまたは秘密鍵ファイルは抽出できません。 証明書ツールキットを使用して、証明書ファイル、パスワードファイル、または秘密鍵ファイルを必要な形式に変換できます。 証明書形式の変換方法の詳細については、「証明書の形式を変換する」をご参照ください。
手順 2: NGINX サーバーに証明書をインストールする
次のコマンドを実行して、NGINX サーバーの conf ディレクトリに証明書を格納するディレクトリを作成します。
cd /usr/local/nginx/conf # NGINX サーバーのデフォルトの構成ファイルディレクトリに移動します。このディレクトリは、NGINX を手動でコンパイルしてインストールする場合に使用されます。デフォルトの NGINX インストールディレクトリを変更した場合、または他の方法で NGINX をインストールした場合は、実際のディレクトリを指定してください。 mkdir cert # cert という名前のディレクトリを作成します。
証明書ファイルと秘密鍵ファイルを NGINX サーバーの次のディレクトリにアップロードします: /usr/local/nginx/conf/cert。
説明PuTTY、Xshell、WinSCP などのリモートログインツールのファイルアップロード機能を使用してファイルをアップロードできます。Alibaba Cloud Elastic Compute Service (ECS) インスタンスにファイルをアップロードする方法の詳細については、「リモートデスクトップ接続または Windows アプリを使用して Windows インスタンスにファイルを転送する」または「Linux インスタンスにファイルをアップロードする」をご参照ください。
NGINX サーバーの nginx.conf 構成ファイルを開き、ファイル内の証明書関連の設定を変更します。
次のコマンドを実行して、構成ファイルを開きます。
vim /usr/local/nginx/conf/nginx.conf
重要デフォルトでは、nginx.conf 構成ファイルは /usr/local/nginx/conf ディレクトリに格納されています。nginx.conf 構成ファイルを別の場所に移動した場合は、
nginx -t
コマンドを実行して構成ファイルの新しいパスを取得し、/usr/local/nginx/conf/nginx.conf
を新しいパスに置き換えることができます。nginx.conf 構成ファイルで HTTPS サーバー設定項目を見つけます。
説明nginx.conf 構成ファイル、または include ディレクティブによって参照されるファイルに server 設定項目が含まれていない場合は、server 設定項目を手動で追加します。
各行の先頭から # コメント記号を削除し、次のサンプルコードに基づいて設定を変更します。
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; } }
オプション。 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; } }
次の図は、構成後の結果を示しています。
次のコマンドを実行して、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 を証明書にバインドされているドメイン名に置き換えます。
アドレスバーに南京錠アイコンが表示されている場合は、証明書がインストールされています。