Amazon Lightsail Bitnami 인스턴스에 설치된 내 웹 사이트의 Let's Encrypt SSL 인증서가 곧 만료될 예정입니다.
간략한 설명
Let's Encrypt SSL 인증서는 생성 90일 후 만료됩니다. Lightsail에서 호스팅되는 Bitnami 스택에 Let's Encrypt SSL 인증서를 설치하려면 어떻게 해야 하나요?에 안내된 단계에 따라 표준 Let's Encrypt SSL 인증서를 설치했다면 SSL 인증서가 자동으로 갱신됩니다. 그러나 제대로 구성하지 않은 경우 자동 갱신이 실패할 수 있습니다.
Amazon Lightsail에서 호스팅되는 Bitnami 스택에 와일드카드 Let's Encrypt SSL을 설치하려면 어떻게 해야 하나요?에 안내된 방법 2에 따라 와일드카드 Let's Encrypt SSL을 설치했다면 인증서를 수동으로 갱신해야 합니다. 설치 방법 2의 경우 자동 갱신을 지원하지 않습니다.
다음 해결 방법에서는 WordPress, LAMP, Magento, MEAN 등 Bitnami에서 호스팅하는 Lightsail 인스턴스에 인증서를 수동으로 갱신하는 방법을 설명합니다.
해결 방법
인증서 설치 도구 파악
인증서를 설치할 때 사용한 도구를 파악합니다. SSL 인증서를 설치할 때 사용한 도구를 확인하려면 다음을 따르세요.
-
디렉터리 /etc/letsencrypt와 /opt/bitnami/letsencrypt에서 다음 명령을 실행해 인증서 파일을 찾습니다. DOMAIN을 내 도메인 이름으로 바꿔야 합니다.
sudo grep -irl "$(openssl s_client -verify_quiet -showcerts -connect DOMAIN:443 2>/dev/null | sed -n '/BEGIN/,/END/{p;/END/q}' | head -n 3 | tail -n 2)" /opt/bitnami/letsencrypt /etc/letsencrypt
-
인증서 파일이 /opt/bitnami/letsencryp 디렉터리에 있다면 bncert-tool이나 Lego 클라이언트로 인증서가 설치되었을 확률이 큽니다. 이를 확인하려면 다음 명령을 실행하세요.
sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt list
단계 1의 명령 출력이 두 번째 명령에 있는 인증서 경로와 일치하면 bncert-tool이나 Lego로 인증서가 설치된 것입니다.
/etc/letsencrypt의 하위 디렉터리 내에 인증서 파일이 있는 경우 Certbot으로 인증서가 설치되었을 확률이 큽니다. 이를 확인하려면 다음 명령을 실행하세요.
sudo certbot certificates
단계 1의 명령 출력이 cerbot 명령에 있는 인증서 경로와 일치하면 Certbot으로 인증서가 설치된 것입니다.
확인된 도구에 맞게 다음 해결 단계를 따르세요.
bncert-tool이나 Lego로 설치된 Let's Encrypt 인증서를 갱신하세요.
다음 명령을 실행하세요.
sudo /opt/bitnami/ctlscript.sh stop
sudo /opt/bitnami/letsencrypt/lego --tls --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/opt/bitnami/letsencrypt" renew --days 90
sudo /opt/bitnami/ctlscript.sh start
명령을 실행할 때는 EMAIL-ADDRESS와 DOMAIN을 모두 옳은 값으로 바꾸세요. EMAIL-ADDRESS 경우 사용 중인 이메일 주소 중 하나를 사용하세요. 또는 인증서를 설치할 때 사용한 것과 동일한 이메일 주소를 사용하세요. 다음 명령을 사용해 인증서를 설치하는 데 사용한 이메일을 검색할 수 있습니다.
sudo ls /opt/bitnami/letsencrypt/accounts/acm*
필요한 경우 다음 명령을 사용해 도메인 이름을 확인하세요.
sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt list
Certbot을 사용해 설치한 Let's Encrypt 인증서 갱신
다음 명령을 실행해 인증서를 설치할 때 사용한 인증 방법을 확인합니다. DOMAIN을 인증서의 기본 도메인 이름으로 바꾸세요.
sudo cat /etc/letsencrypt/renewal/DOMAIN.conf
명령 출력에서 authenticator 파라미터 값을 확인하세요. 값에 따라 다음 갱신 방법 중 하나를 사용하세요.
authenticator 파라미터 값이 독립형, webroot, apache, nginx, dns-route53, 또는 수동이 아닌 기타 값이라면 다음 명령을 사용해 갱신을 완료하세요.
sudo /opt/bitnami/ctlscript.sh stop
sudo certbot renew
sudo /opt/bitnami/ctlscript.sh start
이 명령을 사용하면 갱신 예정인 인증서를 모두 갱신합니다.
- 또는 -
authenticator 파라미터 값이 수동이고 pref_challs 파라미터 값이 dns인 경우 자동 갱신을 설정할 수 없습니다. 이 경우, 다음 단계에 따라 수동으로 갱신해야 합니다. 참고: 인증서를 갱신할 때마다 이 단계를 반복해야 합니다.
-
이 방법을 사용하려면 도메인의 DNS 공급자에 TXT 레코드를 추가해야 합니다. 세션 제한 시간이 초과되지 않도록 Linux GNU Screen에서 명령을 실행하는 것이 좋습니다. 자세한 내용은 Linux Screen 사용 방법을 참조하세요.
Screen 세션을 시작하려면 다음 명령을 입력하세요.
screen -S letsencrypt
-
다음 명령을 실행하고 Domains 파라미터 값을 확인하세요. DOMAIN을 인증서의 기본 도메인 이름으로 바꾸세요.
sudo certbot certificates -d DOMAIN
-
다음 명령을 실행하여 인증서를 갱신하세요. -d 옵션을 사용해 이전 명령에서 찾은 각 도메인을 동일한 순서로 모두 포함해야 합니다. 도메인의 순서를 추가, 제거, 또는 변경하는 경우 원래 인증서를 갱신하는 대신 새 인증서가 생성될 수 있습니다.
sudo certbot certonly --manual --preferred-challenge dns -d DOMAIN-1 -d DOMAIN-2 --force-renewal
-
지정 도메인 소유 여부를 확인하는 메시지가 표시됩니다. 이는 내 도메인의 DNS 레코드에 TXT 레코드 추가를 확인하기 위한 것입니다. Let's Encrypt의 경우 확인을 위해 사용해야 하는 TXT 레코드를 하나나 여러 개 제공합니다.
-
화면에 TXT 레코드가 표시되면 해당 레코드를 도메인의 DNS에 추가하세요.
중요: TXT 레코드가 인터넷 DNS로 전파되었는지 확인될 때까지 Enter 키를 누르지 마세요. CTRL+D를 누르면 현재 화면 세션이 종료되므로 누르지 마세요.
-
TXT 레코드가 인터넷 DNS로 전파되었는지 확인하려면 MX Toolbox 웹 사이트의 DNS Text Lookup에서 찾아보세요. 텍스트 상자에 다음 텍스트를 입력하고 TXT 검색을 선택해 검사를 실행하세요. example.com을 사용자의 도메인 이름으로 바꾸세요.
_acme-challenge.example.com
-
TXT 레코드가 인터넷 DNS로 전파되었다면 페이지에 TXT 레코드 값이 표시됩니다. 이제 화면으로 되돌아가서 Enter 키를 누르세요.
-
셸에서 제거된 경우 명령 screen -r SESSIONID로 다시 실행할 수 있습니다. screen -ls 명령을 실행해 세션 ID를 가져옵니다.
-
Certbot 프롬프트에서 다른 TXT 레코드를 추가하라는 메시지가 표시되면 5~8단계를 반복하세요.
-
SSL 인증서가 성공적으로 생성되면 "Successfully received certificate"라는 메시지가 표시됩니다.