AWS Route53으로 Let's Encrypt SSL 발급하기
이 글에서는 AWS Route53 서비스로 Let's Encrypt SSL을 발급하는 방법을 설명한다. 함께 배워보자.

안녕하세요,
이 글에서는 AWS Route53 서비스로 Let's Encrypt SSL을 발급하는 방법을 설명한다. 함께 배워보자.
Let's Encrypt란 무엇인가?
Let's Encrypt는 Internet Security Research Group(ISRG)이 운영하는 비영리 인증 기관으로, Transport Layer Security 암호화를 위한 X.509 인증서를 무료로 제공한다. 즉, 프로젝트/앱을 위한 무료 SSL 인증서를 받을 수 있으며 SSL 인증서는 90일 동안 유효하다. 자동 갱신을 위한 자동화가 필요하다.
AWS Route53이란 무엇인가?
Amazon Route 53은 확장 가능하고 고가용성의 Domain Name System 서비스다. 2010년 12월 5일에 출시되었으며, Amazon.com의 클라우드 컴퓨팅 플랫폼인 Amazon Web Services의 일부다. 새 도메인을 등록하거나 기존 도메인을 이전하거나 도메인의 DNS 관리 시스템만 사용할 수 있다.
이 글에서는 Google Domains에 등록된 내 도메인 중 하나를 사용하며, DNS 관리 시스템만 사용하기로 결정했다. Route53의 Public Hosted Zone 유형이어야 한다. 내 도메인은 "ermis.email"이다.
Route 53으로 Let's Encrypt SSL을 발급하는 이유
Let's Encrypt에서 새 SSL 인증서를 요청하면 certbot이 Let's Encrypt 서버에 요청을 보내는데, 암호화 인증서를 얻기 위해 AWS 밖으로 HTTP(비보안) 요청을 보내고 받고 싶지 않다 : ) 약간 이상하고 보안 문제를 일으킬 수 있다고 생각한다.
IAM Policy
AWS EC2를 사용하여 AWS 내에서 직접 SSL을 발급하기로 결정했으며, 먼저 Route53에 접근하기 위한 IAM Policy를 생성해야 한다. 내 EC2는 Elastic IP를 가지고 있어 IAM Policy를 더 안전하게 만들고 Route53 리소스에 대한 접근을 제한한다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CertbotRoute53",
"Effect": "Allow",
"Action": [
"route53:GetChange",
"route53:ListHostedZones"
],
"Resource": "*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "3.92.136.59/32"
}
}
},
{
"Sid": "CertbotRoute531",
"Effect": "Allow",
"Action": "route53:ChangeResourceRecordSets",
"Resource": "arn:aws:route53:::hostedzone/Z01859902ZBFBUXJ0AV3J",
"Condition": {
"IpAddress": {
"aws:SourceIp": "3.92.136.59/32"
}
}
}
]
}발급하자!
[root@ip-172-31-89-11 ~]# export AWS_PROFILE=certbot-route53; \
> certbot certonly --dns-route53 \
> --agree-tos \
> -m hello@ermis.email \
> --non-interactive \
> -d hermes.ermis.email마지막 한 가지
SSL 갱신이 필요한지 확인하는 cron을 설정하는 것을 잊지 말자.
00 00 * * * export AWS_PROFILE=certbot-route53; certbot renew -q내 글을 읽어줘서 감사하며, 즐거웠길 바란다!
Ercan의 다른 글
같은 저자, 다른 영역의 사이트 두 개.