Table of Contents
Let’s encrypt wild 인증서 발급받기(with Route53)
패키지 설치
sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-nginx
sudo apt install python3-certbot-dns-route53
DNS TXT 자동화 설정추가
아래에 추가할 인증키는 기존에 쓰고 있는 인증키가 아니라, 아래에서 새로 생성할 인증키입니다.
sudo mkdir -p /root/.aws
sudo vi /root/.aws/credentials
[letsencrypt]
aws_access_key_id={AWS_Access_ID}
aws_secret_access_key={AWS_Secret_Key}
sudo chmod 640 /root/.aws/credentials
IAM 계정추가
aws.route53.letsencrypt
이라는 이름으로 IAM
계정을 추가합니다.(권한부여 X)
발급받은 인증키를 위 파일에 입력해줍니다.
sudo vi /root/.aws/credentials
호스팅존아이디를 찾습니다.
aws route53 list-hosted-zones-by-name |
jq --arg name "skyer9.pe.kr." \
-r '.HostedZones | .[] | select(.Name=="\($name)") | .Id'
정책생성을 하고 아래 내용을 입력합니다.
위에서 찾은 호스팅존아이디
를 입력해 줍니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"route53:ListHostedZones",
"route53:GetChange"
],
"Resource": [
"*"
]
},
{
"Effect" : "Allow",
"Action" : [
"route53:ChangeResourceRecordSets"
],
"Resource" : [
"arn:aws:route53:::hostedzone/호스팅존아이디"
]
}
]
}
정책을 위에서 생성한 계정에 부여합니다.
인증서 생성
기존에 다른 IAM 인증키가 있다면 잠시 옮겨줍니다.
mv ~/.aws/credentials ~/.aws/credentials.bak
아래 명령으로 인증서를 생성합니다.
sudo certbot certonly --dns-route53 -n \
-d *.skyer9.pe.kr \
-d skyer9.pe.kr \
--server https://acme-v02.api.letsencrypt.org/directory
mv ~/.aws/credentials.bak ~/.aws/credentials
인증서 자동 갱신
sudo crontab -e
# ┌───────────── min (0 - 59)
# │ ┌────────────── hour (0 - 23)
# │ │ ┌─────────────── day of month (1 - 31)
# │ │ │ ┌──────────────── month (1 - 12)
# │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to
# │ │ │ │ │ Saturday, or use names; 7 is also Sunday)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * command to execute
30 6 22 * * /usr/bin/certbot renew --renew-hook="systemctl reload nginx"
인증서 상태 확인
sudo certbot certificates
Route53 을 이용한 업데이트 실패시 임시조치
수동모드로 업데이트한다.
sudo certbot certonly --manual --preferred-challenges=dns \
-d *.skyer9.pe.kr \
-d skyer9.pe.kr \
--server https://acme-v02.api.letsencrypt.org/directory
중간에 Route53 에 _acme-challenge.skyer9.pe.kr 서브도메인을 추가하라고 한다.
TXT 유형으로 하고 값을 입력하라고 하는 랜덤문자열을 입력해준다.
2022-04-30 기준으로 따옴표는 자동으로 입력되므로 입력해주지 않는다.