Let's Encryptを用いてlightsailをssl化する


目次的なの

  • 書こうと思った理由
  • 発行までの下準備
  • 発行
  • 更新

書こうと思った理由

毎回複数サイトを見るのが面倒だからまとめちまおうと

発行までの下準備

Let’s Encrypt(LEGO) インストール

以下のコマンドにて/tmpにLet’s Encrypt(LEGO) をインストール

# cd /tmp
# curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i -

解凍

# tar xf lego_{バージョン}.tar.gz

作業用ディレクトリの追加、移動

# sudo mkdir -p /opt/bitnami/letsencrypt
# sudo mv lego /opt/bitnami/letsencrypt/lego

発行

bitnamiサービスの停止

# sudo /opt/bitnami/ctlscript.sh stop

証明書の発行

sudo /opt/bitnami/letsencrypt/lego --tls --email="{[email protected]}" --domains="{domain}" --path="/opt/bitnami/letsencrypt" run

証明書 ファイル、暗号鍵ファイル 差替え

aws Lightsail LAMP7のインスタンス環境だと、デフォルトで証明書ファイル(server.crt)、暗号鍵ファイル(server.key)が配置されています。

これらを作成済みのファイルに差し替える必要があります。

まず、既存のファイルをバックアップします。
※crtファイル、keyファイルが存在しないとbinamiサービスは正常に起動できなくなるので、失敗に備えてバックアップします。

# sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt.old
# sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.key /opt/bitnami/apache2/conf/bitnami/certs/server.key.old

バックアップ後に反映させるため移動

# sudo cp /opt/bitnami/letsencrypt/certificates/{domain}.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt
# sudo cp /opt/bitnami/letsencrypt/certificates/{domain}.key /opt/bitnami/apache2/conf/bitnami/certs/server.key

停止していたbitnamiサービスの起動

# sudo /opt/bitnami/ctlscript.sh start

ここまで実行すると設定した{domain}がhttpsアクセスできると思います

更新

このままではいずれ有効期限が切れてしまうため更新用ファイルを作成する

# sudo vi /opt/bitnami/letsencrypt/renew-certificate.sh

中身

renew-certificate.sh

#!/bin/bash

sudo /opt/bitnami/ctlscript.sh stop
sudo /opt/bitnami/letsencrypt/lego --tls --email="{[email protected]}" --domains="{domain}" --path="/opt/bitnami/letsencrypt" renew
sudo /opt/bitnami/ctlscript.sh start

アクセス権限の書き換え

# sudo chmod +x /etc/lego/renew-certificate.sh

cronの設定

# sudo crontab -e
# 毎月0時更新
0 0 1 * * sh /opt/bitnami/letsencrypt/renew-certificate.sh

参考

https://qiita.com/yshishido/items/67c57b9faafbda07da81
https://syslog.life/2020/10/18/aws-lightsail-%E8%A8%BC%E6%98%8E%E6%9B%B8-%E4%BD%9C%E6%88%90-%E8%A8%AD%E5%AE%9A-tls-ssl-lets-encrypt/#%E3%83%BBLets_EncryptLEGO_%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB