Amazon Lightsail でホストされている Bitnami スタックに SSL 証明書をインストールする方法を教えてください。

最終更新日: 2020 年 4 月 3 日

Amazon Lightsail でホストされている Bitnami スタックに SSL 証明書をインストールする方法を教えてください。

簡単な説明

無料の Let's Encrypt SSL 証明書は、Lego クライアントを使用して生成できます。Let's Encrypt と Lego クライアントの詳細については、GitHub ウェブサイトの Let's Encrypt クライアントと ACME ライブラリを参照してください。

解決方法

Lightsail インスタンスを作成する

1.    Lightsail コンソールを開き、[インスタンスの作成] を選択します。

2.    プラットフォームに [Linux] を選択し、設計図に [WordPress] を選択してから、[インスタンスの作成] を選択します。

3.    静的 IP アドレスを作成し、インスタンスにアタッチします。次の例では、192.0.2.0 が静的 IP アドレスです。

4.    アドレス (A) レコードを作成し、それをドメインから IP にポイントします。

5.    host コマンドで DNS ルックアップを実行し、ドメインが静的 IP にマッピングされていることを確認します。

$ host example.ie
example.ie has address 192.0.2.0

6.    ウェブブラウザにドメインを入力し、HTTPS ではなく HTTP 経由でのみアクセス可能であることを確認します。

Bitnami HTTPS 設定ツールを実行する

Bitnami HTTPS 設定ツールは、2019 年 5 月 10 日以降にリリースされた Bitnami スタックの /opt/bitnami/letsencrypt/directory に含まれています。ツールは、以下の手順を自動的に実行します。

Bitnami スタックで HTTPS 証明書を設定する
証明書の自動更新を作成する
HTTP から HTTPS へのリダイレクトをセットアップする

次のコマンドを実行して Bitnami HTTPS 設定ツールを起動します。

sudo /opt/bitnami/bncert-tool

このツールの使用またはツールのダウンロードの詳細については、Bitnami ドキュメントウェブサイトの「Bitnami HTTPS 設定ツールについて」を参照してください。

(オプション) Let's Encrypt 証明書を手動で生成して設定する

Bitnami HTTPS 設定ツールがインストールされていない場合、または /opt/bitnami/letsencrypt/directory がない場合は、Let's Encrypt 証明書を手動で生成して設定できます。

Let's Encrypt 証明書を手動で作成および設定する手順については、Bitnami Documentation ウェブサイトの「Bitnami アプリケーションの Let's Encrypt SSL 証明書を生成してインストールする - 代替アプローチ」を参照してください。

注意 : Let's Encrypt SSL 証明書は、Lego クライアントによって生成されます。Bitnami の古いバージョンでは、クライアントがインストールされていない可能性があります。/opt/bitnami/letsencrypt/ ディレクトリを検索して、Lego クライアントがインストールされていることを確認します。

ls -l /opt/bitnami/letsencrypt/
total 29244
-rwxr-xr-x 1 root root 29940480 Apr 18 18:42 lego
drwxr-xr-x 2 root root   4096 Apr 30 10:44 scripts

(オプション) HTTP から HTTPS へのリダイレクトを手動で設定する

HTTP から HTTPS へのリダイレクトを強制するには、Apache 設定ファイルの仮想ホスト部分を編集します。Bitnami WordPress イメージの場合、このファイルは /opt/bitnami/apache2/conf/bitnami/bitnami.conf にあります。

1.    Apache 設定を編集して、次の行を含めます。

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]

編集した Apache 設定の例を次に示します。

$ sudo vi /opt/bitnami/apache2/conf/bitnami/bitnami.conf
  DocumentRoot "/opt/bitnami/apache2/htdocs"
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]

2.    Bitnami サービスを再起動して変更を有効にします。

$ sudo /opt/bitnami/ctlscript.sh restart
Syntax OK
/opt/bitnami/apache2/scripts/ctl.sh : httpd stopped
/opt/bitnami/php/scripts/ctl.sh : php-fpm stopped
/opt/bitnami/mysql/scripts/ctl.sh : mysql stopped
/opt/bitnami/mysql/scripts/ctl.sh : mysql  started at port 3306
/opt/bitnami/php/scripts/ctl.sh : php-fpm started
Syntax OK
/opt/bitnami/apache2/scripts/ctl.sh : httpd started at port 80

次のコマンドを使用して、HTTP から HTTPS へのリダイレクトが機能していることをコマンドラインから確認できます。

$ curl -Ilkv example.ie
* Rebuilt URL to: example.ie/
*   Trying 192.0.2.0...
* TCP_NODELAY set
* Connected to example.ie (192.0.2.0) port 80 (#0)
> HEAD / HTTP/1.1
> Host: example.ie
> User-Agent: curl/7.53.1
> Accept: */*
> 
< HTTP/1.1 302 Found
HTTP/1.1 302 Found
< Date: Thu, 20 Jun 2019 14:53:04 GMT
Date: Thu, 20 Jun 2019 14:53:04 GMT
< Server: Apache
Server: Apache
< X-Frame-Options: SAMEORIGIN
X-Frame-Options: SAMEORIGIN
< Location: https://example.ie/
Location: https://example.ie/
< Content-Type: text/html; charset=iso-8859-1
Content-Type: text/html; charset=iso-8859-1
* Connection #0 to host example.ie left intact