Amazon Lightsail 인스턴스에 내 웹사이트에 와일드카드 SSL 인증서를 설치하려고 합니다.
간략한 설명
다음 해결 방법은 Bitnami 스택이 없는 Lightsail 인스턴스에서 호스팅되는 웹사이트에 와일드카드 Let's Encrypt SSL 인증서를 설치하는 방법에 대해 설명합니다. 이러한 인스턴스 블루프린트의 예로는 Amazon Linux 2 또는 Ubuntu가 있습니다. 다른 인스턴스 블루프린트가 있거나 표준 인증서를 설치하려는 경우 다음 중 하나를 참고하세요.
해결 방법
참고: 시작하기 전에 Certbot 도구를 설치합니다. 설치 지침은 Let's Encrypt 인증서 설치를 위해 내 Lightsail 인스턴스에 Certbot 패키지를 어떻게 설치하나요?를 참고하세요.
Lightsail 인스턴스에 와일드카드 Let's Encrypt SSL 인증서를 설치하는 방법은 도메인의 DNS 공급업체에 따라 다릅니다. 시작하려면 Certbot 웹사이트의 DNS 플러그인에 DNS 공급업체가 표시되는지 확인합니다. 다음 방법은 서버에 인증서를 설치하는 방법을 설명합니다. 추가 단계를 수동으로 완료해야 합니다. 예를 들어 인증서를 사용하도록 서버를 구성해야 하며 HTTPS 리디렉션을 설정해야 합니다.
도메인에서 나열된 DNS 공급업체 중 하나를 사용하는 경우
다음 예제에서 DNS 공급업체는 Amazon Route 53입니다. 지원되는 다른 DNS 공급업체에 대한 설명은 Certbot 웹사이트에서 DNS 플러그인을 참조합니다.
-
프로그램 액세스 권한이 있는 AWS Identity and Access Management(AWS IAM) 사용자를 만듭니다. Certbot이 DNS 챌린지를 완료하는 데 필요한 최소 IAM 사용자 권한은 Certbot 웹 사이트에서 certbot-dns-route-53을 참조합니다.
-
나노 편집기에서 /root/.aws/credentials 파일을 열려면 다음 명령을 실행합니다.
sudo mkdir /root/.aws
sudo nano /root/.aws/credentials
-
다음 줄을 파일에 복사합니다.
[default]
aws_access_key_id = AKIA************E
aws_secret_access_key = 1yop**************************l
참고: aws_access_key_id을 1단계에서 만든 액세스 키 ID로 바꿉니다.
-
파일을 저장하려면 Ctrl + X, Y, 마지막으로 ENTER을 차례로 누릅니다.
-
서버에서 Let's Encrypt 인증서를 만듭니다. 도메인에서 Amazon Route 53을 DNS 공급업체로 사용하는 경우 다음 명령을 실행합니다.
sudo certbot certonly --dns-route53 -d example.com -d *.example.com
참고: example.com을 사용자의 도메인 이름으로 바꿉니다.
-
Certbot이 SSL 인증서를 생성한 후에 인증서를 성공적으로 받았습니다라는 메시지를 받게 됩니다. 인증서 및 키 파일 위치도 제공됩니다. 8단계에서 사용할 수 있도록 이 파일 위치를 텍스트 파일에 복사합니다.
-
인증서 자동 갱신을 설정합니다.
Certbot 패키지를 snapd와 함께 설치한 경우, 갱신은 systemd 타이머 또는 cronjob에서 자동으로 구성됩니다.
OS 배포가 Amazon Linux 2 또는 FreeBSD인 경우, Certbot 패키지는 snapd와 함께 설치되지 않습니다. 수동으로 갱신을 구성하려면 다음 명령을 실행합니다.
echo "30 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null
-
이제 인증서를 설치하고 갱신을 설정했습니다. 하지만 여전히 이 인증서를 사용하도록 웹 서버를 구성해야 하며 HTTPS 리디렉션도 설정해야 합니다. 구성은 인스턴스의 웹 서버 설정에 따라 다릅니다. 구성 지침은 웹 서비스 설명서를 참고하세요.
도메인에서 나열된 DNS 공급업체 중 하나를 사용하지 않는 경우
참고: 이 방법은 자동 인증서 갱신을 지원하지 않습니다.
다음 단계에서는 도메인의 DNS 공급업체에 TXT 레코드를 추가합니다. 이 프로세스는 다소 시간이 걸릴 수 있습니다. 세션이 시간 초과되는 것을 방지하려면 Linux GNU Screen에서 명령을 실행하는 것이 가장 좋습니다.
-
스크린 세션을 시작하려면 다음 명령을 입력합니다.
screen -S letsencrypt
-
대화형 모드에서 Certbot을 시작하려면 다음 명령을 입력합니다. 이 명령은 도메인 소유권을 확인하기 위해 DNS 챌린지와 함께 수동 권한 부여 방법을 사용하도록 Certbot에게 지시합니다.
sudo certbot certonly --manual --preferred-challenges dns -d example.com -d *.example.com
참고: example.com을 사용자의 도메인 이름으로 바꿉니다.
-
Certbot은 도메인의 DNS 레코드에 TXT 레코드를 추가하라는 메시지를 표시합니다. 이 작업은 지정한 도메인을 소유하고 있는지 확인합니다. Let's Encrypt는 확인에 사용할 단일 또는 여러 TXT 레코드를 제공합니다.
-
화면에 TXT 레코드가 표시되면 제공된 레코드를 도메인의 DNS에 추가합니다. 참고: TXT 레코드가 인터넷 DNS로 전파되는지 확인할 때까지 ENTER을 누르지 마세요. Ctrl + D를 누르면 현재 화면 세션이 종료되므로 누르지 마세요.
-
TXT 레코드가 인터넷 DNS로 전파되었는지 확인하려면 MX 도구 상자 웹사이트의 DNS 텍스트 조회에서 조회합니다. 확인을 실행하려면 텍스트 상자에 다음 텍스트를 입력한 다음 TXT 조회를 선택합니다.
_acme-challenge.example.com
참고: example.com을 사용자의 도메인 이름으로 바꿉니다.
-
TXT 레코드가 인터넷 DNS로 전파되는 경우 페이지에 TXT 레코드 값이 표시됩니다. 화면으로 돌아가서 ENTER를 누릅니다.
참고: 셸에서 제거된 경우 screen -r SESSIONID 명령을 사용하여 다시 들어갑니다. 세션 ID를 찾으려면 screen -ls 명령을 실행합니다.
-
다른 TXT 레코드를 추가할지 묻는 메시지가 있으면 4-6단계를 반복합니다.
-
Certbot이 SSL 인증서를 생성한 후에 인증서를 성공적으로 받았습니다라는 메시지를 받게 됩니다. 인증서 및 키 파일 위치도 제공됩니다. 9단계에서 사용할 수 있도록 이 파일 위치를 텍스트 파일에 복사합니다.
-
이제 인증서를 설치하고 갱신을 설정했습니다. 하지만 여전히 이 인증서를 사용하도록 웹 서버를 구성해야 하며 HTTPS 리디렉션도 설정해야 합니다. 구성은 인스턴스의 웹 서버 설정에 따라 다릅니다. 구성 지침은 웹 서비스 설명서를 참고하세요.