このトピックでは、証明書ファイルのダウンロードとアップロード、サーバーに必要なパラメーターの設定、インストール結果の確認など、NGINXまたはTengineサーバーにSSL証明書をインストールする方法について説明します。 パラメータには、証明書ファイル、証明書チェーン、および証明書キーが含まれます。 証明書のインストール後、HTTPS経由でNGINXサーバーにアクセスできます。
このトピックでは、64ビットCentOS 8.0オペレーティングシステムを実行するNGINX 1.14.2サーバーをインストールの例として使用します。 インストール操作は、サーバーとオペレーティングシステムのバージョンによって異なります。 ご質問がある場合は、アカウントマネージャーにお問い合わせください.
Alibaba Cloud Elastic Compute Service (ECS) インスタンスを使用している場合、ECSコンソールの [セキュリティグループ] ページでポート443を許可する必要があります。 そうしないと、Webサイトにアクセスしたときに例外が発生します。 詳細については、「セキュリティグループルールの追加」をご参照ください。
このトピックでは、cert-file-nameという名前の証明書をインストールの例として使用します。 証明書ファイルの名前はcert-file-nameです。秘密鍵ファイルの名前はcert-file-name .keyです。 実際のインストールでは、cert-file-nameを証明書の名前に置き換える必要があります。
前提条件
証明書は、証明書管理サービスコンソールを使用して発行されます。 詳細については、「SSL証明書の購入」および「証明書の申請」をご参照ください。
証明書にバインドされているドメイン名に対して、ドメインネームシステム (DNS) の解決が完了します。 ドメイン名はIPアドレスに解決されます。 DNS検証ツールを使用して、ドメイン名のDNSレコードが有効かどうかを確認できます。 詳細については、「ドメイン名のDNSレコードの確認」をご参照ください。
webサーバーでポート443が有効になっています。 ポート443は、HTTPS通信に使用される標準ポートです。
Alibaba Cloud Elastic Compute Service (ECS) インスタンスを使用する場合は、インバウンドセキュリティグループルールがポート443でのTCPアクセスを許可するように設定されていることを確認してください。 詳細については、「セキュリティグループルールの追加」をご参照ください。
ステップ1: 証明書をダウンロードする
Certificate Management Serviceコンソール にログインします。
左側のナビゲーションウィンドウで、証明書の管理>SSL 証明書を選択します。
SSL 証明書ページで、管理する証明書を見つけて、操作列のダウンロードをクリックします。
サーバータイプ列でNginxを見つけ、操作列のダウンロードをクリックします。
ダウンロードした証明書パッケージを解凍します。
次の表に、パッケージから抽出できるファイルを示します。 ファイルは、証明書申請書の送信時に使用する証明書署名要求 (CSR) の生成方法によって異なります。
CSR生成パラメータの値
証明書パッケージから抽出されたファイル
システム生成
PEM形式の証明書ファイル: NGINXサーバーはPEMファイルをサポートしています。 PEM形式の証明書ファイルは、完全な証明書チェーンを含むBase64-encodedテキストファイルです。 解凍後、ファイルの名前は
証明書ID_Domain name bound to The Certificate
形式で指定されます。key形式の秘密鍵ファイル:デフォルトでは、秘密鍵ファイルの名前は証明書にバインドされたドメイン名形式を指定します。
手動で入力する
証明書管理サービスコンソールで作成されるCSRを指定した場合、ダウンロードした証明書パッケージから抽出される証明書ファイルは、CSR生成をシステム生成に設定したシナリオで取得される証明書ファイルと同じになります。
指定された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インスタンスにファイルをアップロードする方法の詳細については、「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設定ファイルでサーバー設定項目を見つけます。
各行の先頭から# comment記号を削除し、次のサンプルコードに基づいて設定を変更します。
サーバ { # デフォルトの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; 場所/{ root html; index index.html index.htm; } }
オプションです。 HTTPリクエストをHTTPSリクエストに自動的にリダイレクトするように設定します。
すべてのHTTPリクエストをHTTPSリクエストにリダイレクトする場合は、設定ファイルに書き換えディレクティブを追加できます。
重要nginx.conf設定ファイルの
server {}
設定項目に次の設定項目を追加する必要があります。 リダイレクト設定を設定した後、nginx.confファイルに2つのserver {}
設定項目が含まれます。サーバ { listen 80; # 証明書にバインドされているドメイン名を入力します。 server_name <yourdomain>; # 書き換えディレクティブを追加して、すべてのHTTPリクエストをHTTPSリクエストにリダイレクトします。 書き換え ^(.*)$ https://$host$1; 場所/{ index index.html index.htm; } }
次の図は、設定後の結果を示しています。
次のコマンドを実行してNGINXサービスを再起動します。
cd /usr/local/nginx/sbin# NGINXサービスの実行可能ディレクトリに移動します。 . /nginx -s reload# 設定ファイルをリロードします。
説明エラー
で "ssl" パラメーターにngx_http_ssl_moduleが必要な
場合は、NGINXを再コンパイルし、NGINXのインストール時に-- with-http_ssl_module
を追加します。エラーの場合
"/cert/3970497_demo.aliyundoc.com.pem":BIO_new_file() に失敗しました (SSL: エラー: 02001002: システムライブラリ: fopen: そのようなファイルがありませんまたはディレクトリ: fopen('/cert/3970497_demo.aliyundoc.com.pem','r') エラー: 2006D080:BIOルーチン: BIO_new_file: そのようなファイルがありません)
が報告されたら、スラッシュを削除します (/
証明書ファイルへの相対パスの前にある たとえば、スラッシュを削除します (/
相対パスの前にある/cert/cert-file-name.pem
. 必要な相対パスはcert/cert-file-name.pem
です。
ステップ3: 証明書がインストールされているかどうかを確認する
証明書のインストール後、証明書にバインドされているドメイン名にアクセスして、証明書がインストールされているかどうかを確認できます。
https:// yourdomain# yourdomainを証明書にバインドされているドメイン名に置き換えます。
アドレスバーにロックアイコンが表示された場合、証明書がインストールされます。
関連ドキュメント
証明書をWebサイトにデプロイした後、証明書は有効にならないか、WebサイトにアクセスしたときにWebサイトが安全でないと報告されます。 私は何をしますか?