Let’s encryptでEC2独自ドメインをSSL化

sertbotをインストールして証明書を取得&設定

yum -y install mod_ssl
amazon-linux-extras install epel -y
sudo yum install -y certbot

apatcheを一旦停止(停止しないとエラーになる)

systemctl stop httpd
sudo certbot certonly --standalone -d (独自ドメイン) -m (EMAIL)

/etc/httpd/conf.d/ssl.confを編集

#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/letsencrypt/live/(独自ドメイン)/fullchain.pem

#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/letsencrypt/live/(独自ドメイン)/privkey.pem

apacheを起動

systemctl start httpd

証明書の更新

sudo certbot renew --dry-run
sudo certbot renew

apatcheは停止しておく
httpアクセスに対してIP制限をしている状況下では失敗する

DNSモードによる更新

python3.8インストール&pipインストール

sudo amazon-linux-extras install -y python3.8
echo 'alias python=python3.8' >> ~/.bashrc
source ~/.bashrc
curl https://bootstrap.pypa.io/get-pip.py | python

certbot-dns-rooute53をインストール

pip install certbot certbot-dns-route53

Route53のDNS操作に使用するAIMユーザを作成し、
AmazonRoute53FullAccessポリシーをアタッチする。
アクセスキーとシークレットアクセスキーを取得し、下記のように設定。

mkdir -p ~/.aws
vi ~/.aws/credentials
aws sts get-caller-identity (設定後認証情報を確認)
[default]
aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY

DNSモードで証明書を更新

certbot certonly \
  --dns-route53 \
  --domain [ドメイン] \
  --email [メールアドレス] \
  --agree-tos \
  --preferred-challenges dns \
  --renew-by-default \
  --text

apacheを再起動

systemctl restart httpd

DNSモードによる更新(自動化)

証明書更新用のシェルを作成

vi certbot-update.sh
#!/bin/bash

certbot certonly \
  --dns-route53 \
  --domain [ドメイン] \
  --email [メールアドレス] \
  --agree-tos \
  --preferred-challenges dns \
  --renew-by-default \
  --text
chmod 755 certbot-update.sh

作成したシェルをcronに登録

0 0 1 */3 * /root/certbot-update.sh
#3ヶ月ごと、1日0時0分にcertbot-update.shを自動実行します
#3月1日0時0分 6月1日0時0分 9月1日0時0分

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です