Apache サーバーをホストする Amazon Elastic Compute Cloud (Amazon EC2) の Ubuntu インスタンスに自己署名 SSL/TLS 証明書をインストールしたいと考えています。
解決策
前提条件: インスタンスのセキュリティグループでは、ポート 80 および 443 経由のトラフィックを許可する必要があります。
Apache および OpenSSL ウェブサーバーをインストールする
サーバーに Apache および OpenSSL をインストールするには、次のコマンドを実行します。
sudo apt-get install apache2 openssl -y
自己署名証明書を生成する
次の手順を実行します。
-
SSL/TLS はパブリックキーとプライベートキーの両方を使用します。ドメインのプライベートキーと証明書署名リクエスト (CSR) を作成するには、次のコマンドを実行します。
sudo openssl req -nodes -newkey rsa:2048 -keyout /etc/ssl/private/private.key -out /etc/ssl/private/request.csr
-
SSL 証明書を生成するには、次のコマンドを実行します。
sudo openssl x509 -in /etc/ssl/private/request.csr -out /etc/ssl/private/certificate.crt -req -signkey /etc/ssl/private/private.key -days 365
完了すると、キー (private.key) ファイルおよび証明書 (certificate.crt) ファイルを Apache ウェブサーバーで使用できます。
Apache で SSL/TLS を使用する設定を行う
Apache で作成した自己署名証明書を使用する設定を行うには、次の手順を実行します。
-
次のコマンドを実行し、Apache の SSL 設定ファイルを開きます。
sudo vi /etc/apache2/sites-available/default-ssl.conf
-
次のパスを使用して SSL 証明書の場所を定義します。
SSLCertificateFile には /etc/ssl/private/certificate.crt を使用します。
SSLCertificateKeyFile には /etc/ssl/private/private.key を使用します。
-
ファイルを保存して閉じます。次に、以下のコマンドを実行して仮想ホストファイルを有効化します。
sudo a2ensite default-ssl.conf
-
Apache のデフォルト仮想ホスト設定ファイルを開くには、次のコマンドを実行します。
sudo vi /etc/apache2/sites-available/000-default.conf
-
ドメイン名にリダイレクトを追加するには、etc/apache2/sites-available/000-default.conf ファイルに次の行を追加します。
Redirect "/" https://Server-IP
注: Server-IP をサーバーの IP アドレスに置き換えてください。上記の行は、DocumentRoot 行の後に入力することをおすすめします。リダイレクトにより、すべてのトラフィックがサイトの SSL/TLS バージョンに転送されます。
-
SSL/TLS とヘッダーモジュールを有効にするには、次のコマンドを実行します。
sudo a2enmod ssl
sudo a2enmod headers
-
次のコマンドを実行すると、Apache サービスがリロードされ、変更が適用されます。
sudo systemctl reload apache2
SSL/TLS サーバーを検証する
次の手順を実行します。
- Web ブラウザを起動します。
- https://Server-IP を開きます。
注: Server-IP をサーバーの IP アドレスに置き換えてください。ウェブブラウザで警告ページへのリダイレクトが発生します。信頼された認証機関により、証明書への署名が行われていないため、この動作は想定動作です。
- [ホストに進む] を選択すると、Apache ホームページが開きます。ブラウザのアドレスバーに錠前および、「保護されていません」というメッセージが表示されます。この場合、証明書が検証されていないことを示していますが、接続は暗号化されています。
Red Hat Enterprise Linux (RHEL) または Community Enterprise Linux で SSL/TLS を設定する方法については、Red Hat のウェブサイトで「ウェブサーバーを設定し、HTTPS を使用する」を参照してください。または、Amazon Linux を使用する場合は、Amazon Linux 1 (AL1)、Amazon Linux 2 (AL2)、または Amazon Linux 2023 (AL2023) 用の SSL/TLS 設定を参照してください。