Let’s encrypt wild 인증서 발급받기

By | 2020년 5월 3일
Table of Content

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

정책생성을 하고 아래 내용을 입력합니다.

{
    "Version": "2012-10-17",

    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "route53:ListHostedZones",
                "route53:GetChange"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect" : "Allow",
            "Action" : [
                "route53:ChangeResourceRecordSets"
            ],
            "Resource" : [
                "arn:aws:route53:::hostedzone/{ZONE_ID}"
            ]
        }
    ]
}

정책을 위에서 생성한 계정에 부여합니다.

인증서 생성

기존에 다른 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

답글 남기기