何回もやってるのに忘れる&情報が錯綜してるのでメモとして残します。
システムを特別組まずデフォルトでwordpress利用しています。
結論自動更新のためにレゴツール(Lego)を使いました。
$sudo certbot -d $DOMAIN -d $WILDCARD --manual --preferred-challenges dns certonly
最初これを使っていたのですが、調べてみると自動更新するのが手間のようでしたので、サクっとできそうなレゴツールでつくり直しました。(2023.05.20現在)
証明書の作り方
基本は公式と同じです。
順番にやればできるかと思います。
IAMユーザーの作成
AWSのIAMにて、ポリシーを作成し、そのポリシーを付与したユーザーを作成します。
以下のJSONで作成
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"route53:GetChange",
"route53:ListHostedZonesByName",
"route53:ListResourceRecordSets"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"route53:ChangeResourceRecordSets"
],
"Resource": [
"arn:aws:route53:::hostedzone/Z09751792HSJDVTY6GJTD"
]
}
]
}
このポリシーをアタッチしたIAMユーザーを作成
作成したユーザーのアクセスキーも作成します。
作成したaws_access_key_idとaws_secret_access_keyは次に使うのでメモしておきます。
接続設定
.awsフォルダを作成し、そこにcredentialsファイルを作成します。
sudo mkdir /root/.aws
sudo nano /root/.aws/credentials
エディタが開くので、作成したawsのアクセスキーを記載して保存&終了します。
[default]
aws_access_key_id = AKIA************
aws_secret_access_key = 3dfef**************************
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 - -O lego.tar.gz
・解凍&展開
tar xf lego.tar.gz
Let’s Encrypt 証明書を作成
・証明書を作成するディレクトリを作成します。
sudo mkdir -p /opt/bitnami/letsencrypt
sudo mv lego /opt/bitnami/letsencrypt/lego
Route53をDNSとして証明書を作成します。
DOMAINとEMAIL-ADDRESSを置き換えてください。
sudo /opt/bitnami/letsencrypt/lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="*.DOMAIN" --dns route53 --path="/opt/bitnami/letsencrypt" run
応答には時間がかかるので少し放置します。
証明書が生成されると/opt/bitnami/letsencrypt/certificates/に作成されます。
証明書をリンクする
作成した証明書を使えるよにリンクをはり、再起動します。
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 ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/apache2/conf/bitnami/certs/server.key
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt
sudo /opt/bitnami/ctlscript.sh restart apache
自動更新の設定
crontabにて更新設定します。
編集画面を起動します。
sudo crontab -e -u bitnami
以下を記載します。
日時の設定部分0 0 * * *は
分 時 日 月 曜日
の並びになっています。
0 0 1 * * sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="*.DOMAIN" --dns route53 renew >> sudo /var/log/letsencrypt.log 2>&1 && sudo /opt/bitnami/apache/bin/httpd -f /opt/bitnami/apache/conf/httpd.conf -k graceful
実はまだ設定後更新されていないので、また来月確認して追記します。(時間に余裕があるので確認してません)
追記:2023/06/01
こちら失敗しておりました。
あ、すいません。30日以内での更新は駄目みたいでした。30日すぎたところで再度確認してみます