このトピックでは、証明書ファイルのダウンロードとアップロード、Apacheサーバーでの関連パラメーターの設定、インストール結果の検証など、ApacheサーバーにSSL証明書をインストールする方法について説明します。 パラメータには、証明書ファイル、証明書チェーン、および証明書キーに関連するものが含まれます。 証明書をインストールすると、HTTPS経由でApacheサーバーにアクセスできます。これにより、データ転送のセキュリティが保証されます。
このトピックでは、CentOSオペレーティングシステムを実行するApache 2.4.7サーバーに証明書をインストールする方法の例を示します。 インストールプロセスは、オペレーティングシステムまたはwebサーバーのバージョンによって異なります。 ご質問がある場合は、アカウントマネージャーにお問い合わせください.
前提条件
証明書は、証明書管理サービスコンソールを使用して発行されます。 詳細については、「SSL証明書の購入」および「証明書の申請」をご参照ください。
証明書にバインドされているドメイン名に対して、ドメインネームシステム (DNS) の解決が完了します。 ドメイン名はIPアドレスに解決されます。 DNS検証ツールを使用して、ドメイン名のDNSレコードが有効かどうかを確認できます。 詳細については、「ドメイン名のDNSレコードの確認」をご参照ください。
mod_ssl.soモジュールはApacheサーバーにインストールされています。 このモジュールは、SSL暗号化を有効にするために使用されます。
モジュールがインストールされていない場合は、
yum install -y mod_ssl
コマンドを実行してモジュールをインストールします。 コマンドを実行した後、httpd -M | grep 'ssl'
コマンドを実行して、mod_ssl.soモジュールがApacheサーバーに正常にインストールされているかどうかを確認できます。次のコマンド出力は、モジュールが正常にインストールされたことを示します。
ステップ1: 証明書をダウンロードする
Certificate Management Serviceコンソール にログインします。
左側のナビゲーションウィンドウで、証明書の管理>SSL 証明書を選択します。
SSL 証明書ページで、管理する証明書を見つけて、操作列のダウンロードをクリックします。
サーバータイプ列でApacheを見つけ、操作列のダウンロードをクリックします。
ダウンロードした証明書パッケージを解凍します。
次の表に、パッケージから抽出できるファイルを示します。 ファイルは、証明書申請書の送信時に使用する証明書署名要求 (CSR) の生成方法によって異なります。
CSR生成パラメータの値
証明書パッケージから抽出されたファイル
システム生成
CRT形式の証明書ファイル: 既定では、証明書ファイルの名前は [Domain name bound to the Certificate_public] 形式で指定されます。 CRT証明書ファイルはBase64でエンコードされます。
CRT形式の証明書チェーンファイル: 既定では、証明書チェーンファイルの名前は [Domain name bound to the Certificate_chain] 形式で指定されます。
key形式の秘密鍵ファイル: デフォルトでは、秘密鍵ファイルの名前は [証明書にバインドされたドメイン名] 形式です。
手動で入力する
証明書管理サービスコンソールで作成されるCSRを指定した場合、ダウンロードした証明書パッケージから抽出される証明書ファイルは、CSR生成をシステム生成に設定したシナリオで取得される証明書ファイルと同じになります。
指定されたCSRが証明書管理サービスコンソールで作成されていない場合は、ダウンロードした証明書パッケージからPEM証明書ファイルのみを抽出できます。 パスワードファイルまたは秘密鍵ファイルを抽出できません。 証明書ツールキットを使用して、証明書ファイル、パスワードファイル、または秘密鍵ファイルを必要な形式に変換できます。 証明書形式を変換する方法の詳細については、証明書の形式を変換する.
ステップ2: Apacheサーバーに証明書をインストールする
次のコマンドを実行して、Apacheのインストールディレクトリにcertという名前のディレクトリを作成します。
次のコマンドを実行して、Apacheのインストールディレクトリに移動します。
cd /etc/httpd/ # yumを使用してインストールされているApacheのデフォルトのインストールディレクトリに移動します。 ディレクトリを変更した場合、または他の方法でApacheをインストールした場合は、実際のディレクトリを指定します。
次のコマンドを実行して、certという名前のディレクトリを作成します。
mkdir cert# certという名前のディレクトリを作成します。
証明書ファイルとパスワードファイルをApacheサーバーの証明書ディレクトリ (/etc/httpd/cert) にアップロードします。
説明ファイルをアップロードするには、PuTTY、Xshell、WinSCPなどのリモートログオンツールのファイルアップロード機能を使用します。 Alibaba Cloud Elastic Compute Serviceインスタンスにファイルをアップロードする方法の詳細については、「Windowsインスタンスへのファイルのアップロードまたはダウンロード」または「Linuxインスタンスへのファイルのアップロード」をご参照ください。
httpd.confおよびssl.conf設定ファイルの証明書関連の設定を変更します。
mod_ssl.soモジュールの読み込みとSSL暗号化の有効化に使用するLoadModule ssl_module /mod_ssl.so
パラメーターを見つけ、SSL構成ディレクトリの読み込みに使用するInclude conf.mo dules.d/*.conf
パラメーターを見つけます。 番号記号 (#) で始まるコメントがパラメーターに追加されているかどうかを確認します。 はいの場合、コメントを削除します。重要パラメーターを含む設定ファイルは、オペレーティングシステムとApacheのインストール方法によって異なります。 次のリストに、パラメーターを含む設定ファイルについて説明します。
conf.mo dules.d/00-ssl.conf: このファイルには、
LoadModule ssl_module modules/mod_ssl.so
パラメーターが含まれています。httpd.conf: このファイルには、
Include conf.mo dules.d/*.conf
パラメーターが含まれています。http-ssl.conf
上記のパラメーターが見つからない場合は、mod_ssl.soモジュールがApacheサーバーにインストールされているかどうかを確認してください。 モジュールがインストールされていない場合は、
yum install -y mod_ssl
コマンドを実行してモジュールをインストールします。 コマンドを実行した後、httpd -M | grep 'ssl'
コマンドを実行して、mod_ssl.soモジュールがApacheサーバーに正常にインストールされているかどうかを確認できます。次のコマンドを実行して、ssl.conf設定ファイルを開きます。
vim /etc/httpd/conf.d/ssl.conf
重要構成ファイルの名前と構成ファイルが格納されているディレクトリは、オペレーティングシステムによって異なります。 ssl.confファイルが見つからない場合は、Apacheのインストールディレクトリにconf/extra/http-ssl.conf設定ファイルが存在するかどうかを確認してください。
ssl.conf設定ファイルで次のパラメーターを見つけ、次のコメントに基づいてパラメーターを設定します。
<VirtualHost *:443> ServerName# 証明書に追加するドメイン名にServerNameを設定します。 SSLCertificateFile cert/domain_name_public.crt# domain_name_public.crtを証明書ファイルの名前に置き換えます。 SSLCertificateKeyFile cert/domain_name.key# domain_name.keyを秘密鍵ファイルの名前に置き換えます。 SSLCertificateChainFile cert/domain_name_chain.crt# domain_name_chain.crtを証明書チェーンファイルの名前に置き換えます。 名前が番号記号 (#) で始まる場合は、番号記号を削除します。 # 使用するトランスポート層セキュリティ (TLS) プロトコルとカスタム暗号スイートを指定します。 次のサンプルコードは参考用です。 # 後のTLSバージョンでは、セキュリティは高くなりますが、ブラウザとの互換性は低くなります。 # SSLProtocol all -SSLv2 -SSLv3# サポートされているSSLプロトコルを追加し、安全でないプロトコルを削除します。 # SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+ MEDIUM# 暗号スイートを変更します。 </VirtualHost> # 証明書に複数のドメイン名が含まれている場合は、VirtualHostパラメーターをコピーし、ServerNameを別のドメイン名に設定します。 <VirtualHost *:443> ServerName# 証明書に追加する別のドメイン名にServerNameを設定します。 SSLCertificateFile cert/domain_name2_public.crt# domain_name2を別のドメイン名に置き換えます。 SSLCertificateKeyFile cert/domain_name2.key# domain_name2を別のドメイン名に置き換えます。 SSLCertificateChainFile cert/domain_name2_chain.crt# domain_name2を別のドメイン名に置き換えます。 名前が番号記号 (#) で始まる場合は、番号記号を削除します。 SSLEngine on SSLHonorCipherOrder on # 使用するTLSプロトコルとカスタム暗号スイートを指定します。 次のサンプルコードは参考用です。 # 後のTLSバージョンでは、セキュリティは高くなりますが、ブラウザとの互換性は低くなります。 # SSLProtocol all -SSLv2 -SSLv3# サポートされているSSLプロトコルを追加し、安全でないプロトコルを削除します。 # SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+ MEDIUM# 暗号スイートを変更します。 </VirtualHost>
重要ブラウザのバージョンがサーバー名表示 (SNI) をサポートしているかどうかを確認します。 ブラウザのバージョンがSNIをサポートしていない場合、マルチドメイン証明書の設定は有効になりません。
オプションです。 HTTPSリクエストへのHTTPリクエストの自動リダイレクトを設定するには、httpd.conf設定ファイルを変更します。
次のリダイレクションコードをhttpd.conf設定ファイルに追加します。
RewriteEngine on RewriteCond %{SERVER_PORT} ! ^ 443 $ RewriteRule ^(.*)$ https:// %{SERVER_NAME}$1 [L,R]
前述の設定を有効にするには、Apacheサービスを再起動します。
を実行します。Run the
apachectl -kストップ
コマンドを実行してApacheサービスを停止します。を実行します。Run the
apachectl -kスタート
コマンドを実行してApacheサービスを開始します。
ステップ3: 証明書がインストールされているかどうかを確認する
証明書のインストール後、証明書にバインドされているドメイン名にアクセスして、証明書がインストールされているかどうかを確認できます。
https:// yourdomain# yourdomainを証明書にバインドされているドメイン名に置き換えます。
アドレスバーにロックアイコンが表示された場合、証明書がインストールされます。