カテゴリー: AWS

はじめに

巷には、LightsailのWordPressでLet’s Ecryptを使ってSSL化する方法が数多く紹介されてます。
その中でも一番確実なのは、Bitnamiのドキュメンテーション通りに実装する方法であると考えています。
なぜなら、LightsailでWordPressを使う場合、必ずBitnamiだからです。

私はQiita等で紹介されている方法に従い、Let’s Encrypt を入れましたが、上手くSSL化されませんでした。
しかしBitnamiに紹介されている方法で入れたところ、上手くSSLかに成功しました。
なので私はこの方法を推奨しています。

しかし難点が一つあります。それはBitnamiのドキュメンテーションが英語だけなのです。
そこで今回、このBitnamiのドキュメンテーションをベースに、私なりの解説記事を書くことにしました。
この記事に従ってもらえれば、Bitnamiのドキュメンテーションに従って設定したことになります。
なるべく短時間に実現できるよう、余計な記述は省きました。

なおこの記事は、2019年2月9日現在のものがベースになっています。
要望があれば、定期的に更新するようにしたいと思います。

公式HP:
https://docs.bitnami.com/aws/how-to/generate-install-lets-encrypt-ssl/

 

Bitnami用にSSL証明書を作成する方法

前提条件

  • Lightsail上にBitnamiのWordPressを設定していること。
  • 静的IPアドレスを設定していること。
  • ドメイン名を所有していること。
  • DNS ゾーンを設定していること。

自動設定スクリプトを実行する

最新のBitnamiには、自動設定スクリプトが用意されているようです(私のころはなかった)。
この自動設定スクリプトを使う場合は、以下を打つだけで設定できます。

YOURMAILとYOURDOMAINを実際のメールアドレスとドメイン名に置き換えてください。

 

以下に手動で行うための手順を記載しておきます。
古いBitnamiを使用している方はこちらをお試しください。私はこの方法で設定しました。

手順1:Legoクライアントをインストールする

Legoクライアントを使うことで、Let’s Encrypt の証明書を簡単に行うことができます。
手順は以下の通りです。

  • Lightsailから、”SSLを使用して接続”を押して、コンソールにログインする。
  • curlコマンドを実行して、Legoクライアントをインストールする。
  • tarでダウンロードしたファイルを解凍する。
  • X.Y.Zには、実際のバージョン番号で置き換えるのを忘れずに。

 

手順2:ドメインの証明書を暗号化する

注:この手順を進める前に、ドメイン名がBitnamiアプリケーションホストのパブリックIPアドレスを指していることを確認してください。

次のステップでは、自分のドメインのLet’s Encrypt証明書を生成します。

  • すべてのBitnamiサービスを無効にする:

  • 以下のように、ドメインの新しい証明書を要求する(wwwプレフィックスの有無にかかわらず)。
  • DOMAINを実際のドメイン名に置き換え、EMAIL-ADDRESSをメールアドレスに置き換えてください。

注記:指定するドメインの数だけ-domainsオプションを指定することにより、複数のドメイン(たとえば、DOMAINおよびwww.DOMAIN)を使用できます。

  • 利用規約に同意します。

/etc/lego/certificatesディレクトリに、一連の証明書が生成されるようになりました。

手順3:Let’s Encrypt証明書を使用するようにWebサーバーを構成する

次に、Webサーバーに新しい証明書を次のように伝えます。

  • 使用しているWebサーバーに応じて、新しいSSL証明書と証明書キーファイルを正しい場所にリンクします。rootユーザーだけが読み取り可能にするために、ファイルのアクセス許可を更新します。DOMAINを実際のドメイン名に置き換えてください。

Apacheの場合:

NGINXの場合:

 

ヒント:BitnamiスタックがApacheまたはnginxを使用しているかどうかを調べるには、コマンドsudo /opt/bitnami/ctlscript.sh statusの出力を確認してください。

  • すべてのBitnamiサービスを再起動します。

手順4:構成をテストする

https://DOMAINにアクセスしてください(DOMAINを正しいドメイン名に置き換えてください)。

ブラウザのアドレスバーにある南京錠のアイコンが表示されていることを確認してください。

この南京錠のアイコンをクリックすると、ドメインとSSL証明書の詳細が表示されます。

この一連の作業ができれば設定完了です。

手順5:Let’s Encrypt証明書を更新する

暗号化しようとする証明書は90日間有効です。有効期限が切れる前に証明書を更新するには、サーバーコンソールからbitnamiユーザーとして次のコマンドを実行します。DOMAINを実際のドメイン名に置き換え、EMAIL-ADDRESSをメールアドレスに置き換えてください。

失敗する場合:
私はこの方法だと以下のようなエラーが発生しました。

その場合、legoのバージョンアップを行うことで解決します。以下コマンドを打ってバージョンアップしてください。

参考URL:
https://community.bitnami.com/t/lets-encrypt-ssl-certificate-not-renewing/64327/5

 

有効期限が切れる前に証明書を自動的に更新するには、上記のタスクを実行するシェルスクリプトを作成し、定期的にスクリプトを実行するcronジョブをスケジュールします。手順を以下に記載します。

  • /etc/lego/renew-certificate.shに次の内容のスクリプトを作成します。DOMAINを実際のドメイン名に置き換え、EMAIL-ADDRESSをメールアドレスに置き換えてください。

  • スクリプトを実行可能にする:

  • 次のコマンドを実行してcrontabエディタを開きます。

  • crontabファイルに次の行を追加して保存します。

 

以上です。
この記事がいいねと思ったら、以下の方にある”この記事いいね!”ボタンを押してください。
管理人のモチベーションがあがります(笑)
いいね! ←この記事いいね!
Loading...