Amazon Lightsail에서 호스팅되는 Bitnami 스택에 와일드카드 Let's Encrypt SSL 인증서를 설치하려면 어떻게 해야 합니까?

7분 분량
0

Bitnami 스택이 있는 Amazon Lightsail 인스턴스에 내 웹 사이트용 와일드카드 SSL 인증서를 설치하려면 어떻게 해야 합니까?

간략한 설명

다음 해결 방법은 Bitnami 스택이 있는 Lightsail 인스턴스에서 호스팅된 웹 사이트에 대해 와일드카드 Let's Encrypt SSL 인증서를 설치하는 방법을 다룹니다. 이러한 인스턴스 블루프린트의 예로는 WordPress, LAMP, Magento, MEAN 등이 있습니다. 다른 인스턴스 블루프린트가 있거나 표준 인증서를 설치하려는 경우 다음 중 하나를 참조하세요.

표준 Let's Encrypt 인증서

Bitnami 스택이 없는 Lightsail 인스턴스에 표준 Let's Encrypt SSL 인증서를 설치하려면 Lightsail 인스턴스에 표준 Let’s Encrypt SSL 인증서를 설치하려면 어떻게 해야 합니까?를 참조하세요. 여기에는 Amazon Linux 2 및 Ubuntu와 같은 인스턴스가 포함됩니다.

Bitnami 스택을 갖춘 Lightsail 인스턴스에 표준 Let's Encrypt SSL 인증서를 설치하려면 Amazon Lightsail에서 호스팅되는 Bitnami 스택에 Let’s Encrypt SSL 인증서를 설치하려면 어떻게 해야 합니까?를 참조하세요. 여기에는 WordPress, LAMP, Magento와 같은 인스턴스가 포함됩니다.

와일드카드 Let’s Encrypt 인증서(예: *.example.com)

Bitnami 스택이 없는 Lightsail 인스턴스에 와일드카드 Let's Encrypt 인증서를 설치하려면 Amazon Lightsail에 와일드카드 Let’s Encrypt SSL 인증서를 설치하려면 어떻게 해야 합니까?를 참조하세요. 여기에는 Amazon Linux 2 및 Ubuntu와 같은 인스턴스가 포함됩니다.

해결 방법

Bitnami를 호스팅한 Lightsail 인스턴스에 와일드카드 Let’s Encrypt SSL 인증서를 설치하는 데 사용되는 단계는 도메인이 사용하는 DNS 공급자에 따라 달라집니다. 사용할 방법을 결정하려면 DNS 공급자가 Lego 설명서의 DNS 공급자 목록에 속하는지 확인하십시오. 그런 다음 사용할 적절한 방법을 선택합니다.

방법 1: 도메인이 나열된 DNS 공급자 중 하나를 사용하는 경우 Bitnami에서 제공하는 Lego 도구를 사용합니다.

방법 2: 도메인이 나열된 DNS 공급자를 사용하지 않는 경우 Certbot 패키지를 사용하십시오.

참고: 이 글에서 언급한 파일 경로는 Bitnami 스택이 기본 Linux 시스템 패키지를 사용하는지(접근 방법 A) 또는 자체 포함 설치인지(접근 방법 B)에 따라 변경될 수 있습니다. Bitnami 설치 유형을 식별하려면 다음 명령을 실행합니다.

test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."

방법 1

Bitnami 스택은 bncert-tool와 함께 Lego 도구를 제공합니다. 이 도구는 와일드카드 SSL 인증서 생성을 지원하지만 bncert-tool은 지원하지 않습니다.

사전 조건 및 제한

  • 다음 단계에서는 서버에 인증서를 설치하는 방법에 대해 설명합니다. 인증서를 사용하도록 웹 서버를 구성하고 HTTPS 리디렉션을 설정하는 등의 추가 단계를 수동으로 완료해야 합니다.
  • 도메인은 Lego 설명서의 DNS 제공자에 나열된 DNS 공급자 중 하나를 사용해야 합니다.

참고: 다음 예시에서 DNS 공급자는 Amazon Route 53 또는 Amazon Lightsail입니다.

1.    프로그래밍 방식으로 액세스하여 AWS Identify and Access Management(IAM) 사용자를 생성합니다. Lego가 DNS 챌린지를 완료하기 위해 IAM 사용자에게 연결하는 데 필요한 최소 권한은 Lego 설명서의 정책을 참조하세요.

2.    인스턴스에서 다음 명령을 실행하여 나노 에디터에서 /root/.aws/credentials 파일을 엽니다.

sudo mkdir /root/.aws
sudo nano /root/.aws/credentials

3.    다음 줄을 파일에 복사합니다. 그런 다음 Ctrl+x를 눌러 파일을 저장하고, y를 누른 다음 Enter를 누릅니다.

다음 명령에서 aws_access_key_id를 1단계에서 생성한 액세스 키 ID로 바꿉니다. aws_secret_access_key를 1단계에서 생성한 비밀 액세스 키로 바꿉니다.

[default]
aws_access_key_id = AKIA************E
aws_secret_access_key = 1yop**************************l

4.    Bitnami 인스턴스에 /opt/bitnami/letsencrypt/ 디렉터리를 포함시키지 않으면 다음 명령을 사용하여 Lego 클라이언트를 수동으로 설치합니다.

cd /tmp
curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i - -O lego.tar.gz
tar xf lego.tar.gz
sudo mkdir -p /opt/bitnami/letsencrypt
sudo mv lego /opt/bitnami/letsencrypt/lego

5.    서버에서 Let's Encrypt 인증서를 생성합니다. EMAIL-ADDRESS를 인증서에 대한 추가 업데이트를 받을 이메일 주소로 바꿉니다. DOMAIN을 도메인 이름으로 바꿉니다.

Route 53 네임 서버

sudo /opt/bitnami/letsencrypt/lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="*.DOMAIN" --dns route53 --path="/opt/bitnami/letsencrypt" run

Lightsail 네임 서버

sudo /opt/bitnami/letsencrypt/lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="*.DOMAIN" --dns lightsail --path="/opt/bitnami/letsencrypt" run

SSL 인증서가 생성되면 “서버가 인증서로 응답했습니다.”라는 메시지가 나타납니다. SSL 인증서와 개인 키는 다음 위치에서 생성됩니다.

/opt/bitnami/letsencrypt/certificates/DOMAIN.crt

/opt/bitnami/letsencrypt/certificates/DOMAIN.key

6.    SSL 인증서 및 인증서 키 파일을 웹 서버에서 현재 읽고 있는 위치에 연결합니다.

Approach A의 Apache

다음 예제 명령에서 DOMAIN 자리 표시자를 도메인 이름으로 바꿉니다.

sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt.old
sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.key /opt/bitnami/apache2/conf/bitnami/certs/server.key.old
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/apache2/conf/bitnami/certs/server.key
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt
sudo /opt/bitnami/ctlscript.sh restart apache

Approach B의 Apache

다음 예제 명령에서 DOMAIN 자리 표시자를 도메인 이름으로 바꿉니다.

sudo mv /opt/bitnami/apache2/conf/server.crt /opt/bitnami/apache2/conf/server.crt.old
sudo mv /opt/bitnami/apache2/conf/server.key /opt/bitnami/apache2/conf/server.key.old
sudo mv /opt/bitnami/apache2/conf/server.csr /opt/bitnami/apache2/conf/server.csr.old
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/apache2/conf/server.key
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/server.crt
sudo /opt/bitnami/ctlscript.sh restart apache

Approach A의 NGINX

다음 예제 명령에서 DOMAIN 자리 표시자를 도메인 이름으로 바꿉니다.

sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt.old
sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.key /opt/bitnami/nginx/conf/bitnami/certs/server.key.old
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/nginx/conf/bitnami/certs/server.key
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt
sudo /opt/bitnami/ctlscript.sh restart nginx

Approach B의 NGINX

다음 예제 명령에서 DOMAIN 자리 표시자를 도메인 이름으로 바꿉니다.

sudo mv /opt/bitnami/nginx/conf/server.crt /opt/bitnami/nginx/conf/server.crt.old
sudo mv /opt/bitnami/nginx/conf/server.key /opt/bitnami/nginx/conf/server.key.old
sudo mv /opt/bitnami/nginx/conf/server.csr /opt/bitnami/nginx/conf/server.csr.old
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/nginx/conf/server.key
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/nginx/conf/server.crt
sudo /opt/bitnami/ctlscript.sh restart nginx

7.    자동 인증서 갱신을 설정합니다.

Let’s Encrypt 인증서는 90일 동안 유효합니다. 인증서가 만료되기 전에 자동으로 갱신되도록 인증서 갱신을 자동화하려면 다음을 수행합니다.

다음 명령을 실행하여 crontab 편집기를 엽니다.

sudo crontab -e -u bitnami

crontab 파일에 다음 줄을 추가한 다음 파일을 저장합니다. EMAIL-ADDRESS를 사용자 이메일 주소로, DOMAIN을 도메인 이름으로, DNS를 이름 서버 공급자 이름(Route 53, Lightsail 등)으로 바꿉니다.

0 0 * * * sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt --email="EMAIL-ADDRESS" --domains="DOMAIN"  --domains="*.DOMAIN" --dns DNS renew >> /var/log/letsencrypt.log 2>&1 && sudo /opt/bitnami/apache/bin/httpd -f /opt/bitnami/apache/conf/httpd.conf -k graceful

8.    HTTPS 리디렉션을 설정합니다. 자세한 내용은 Bitnami 웹 사이트에서 다음 정보를 참조하세요.

방법 2

사전 조건 및 제한

  • 다음 단계에서는 서버에 인증서를 설치하는 방법에 대해 설명합니다. 인증서를 사용하도록 웹 서버를 구성하고 HTTPS 리디렉션을 설정하는 등의 추가 단계를 수동으로 완료해야 합니다.
  • 이 방법에서는 자동 인증서 갱신이 지원되지 않습니다.

참고: 다음 단계를 시작하기 전에 Certbot을 설치하십시오. 설치 지침은 Lightsail 인스턴스에 Let's Encrypt 인증서 설치를 위해 Certbot 패키지를 설치하려면 어떻게 해야 합니까? 단원을 참고하십시오.

Bitnami 호스팅 인스턴스의 경우 Linux 배포판은 Debian 또는 Ubuntu입니다. 다음 명령을 실행하여 보유한 Linux 배포판을 확인합니다.

cat /etc/os-release | grep -i ^id

1.    이 방법을 사용하려면 도메인의 DNS 공급자에 TXT 레코드를 추가해야 합니다. 이 과정은 다소 시간이 걸릴 수 있으므로 Linux GNU 화면에서 명령을 실행하여 세션 시간 초과를 방지하는 것이 제일 좋습니다. Screen 세션을 시작하려면 다음 명령을 입력합니다.

screen -S letsencrypt

2.    다음 명령을 입력하여 Certbot을 대화식 모드로 시작합니다. 이 명령은 DNS 챌린지를 이용한 수동 인증 방법을 사용하여 도메인 소유권을 확인하도록 Certbot에 지시합니다. example.com을 자신의 도메인으로 바꿉니다.

sudo certbot certonly --manual --preferred-challenges dns -d example.com -d *.example.com

3.    도메인의 DNS 레코드에 TXT 레코드를 추가하여 지정된 도메인을 소유 여부를 확인하라는 메시지가 표시됩니다. Let's Encrypt는 검증에 반드시 사용해야 하는 하나 또는 여러 개의 TXT 레코드를 제공합니다.

4.    화면에 TXT 레코드가 표시되면 먼저 도메인의 DNS에 제공된 레코드를 추가합니다.
중요: TXT 레코드가 인터넷 DNS로 전파된다는 것을 확인할 때까지 ENTER 키를 누르지 마세요. 또한 Ctrl+D를 누르면 화면 세션이 종료되므로 누르지 마세요.

5.    TXT 레코드가 인터넷 DNS로 전파되었는지 확인하려면 MxToolbox의 DNS 텍스트 조회에서 찾아보세요. 텍스트 상자에 다음 텍스트를 입력하고 TXT 조회를 선택하여 확인합니다. example.com을 사용자 도메인으로 바꿔야 합니다.

_acme-challenge.example.com

6.    TXT 레코드가 인터넷의 DNS로 전파된 경우 페이지에 TXT 레코드 값이 표시됩니다. 그러면 화면으로 돌아가서 Enter 키를 누릅니다.

7.    쉘에서 나간 경우 명령 screen -r SESSIONID를 사용하여 다시 들어갑니다. 명령 screen -ls를 실행하여 세션 ID를 가져옵니다.

8.    Certbot 프롬프트에서 다른 TXT 레코드를 추가하라는 메시지가 표시되면 4~7단계를 다시 완료합니다.

9.    SSL 인증서가 생성되면 “인증서를 받았습니다.”라는 메시지가 나타납니다. 인증서 및 키 파일 위치도 제공됩니다. 다음 단계에서 사용할 수 있도록 이러한 파일 위치를 메모장에 저장합니다.

10.    인증서 설치 및 갱신 설정만 완료됩니다. 이 인증서를 사용하고 HTTPS 리디렉션을 설정하도록 웹 서버를 구성해야 합니다. 다음 명령 집합을 사용하여 인증서를 사용하도록 웹 서버를 구성합니다.

Approach A의 Apache

다음 예제 명령에서 DOMAIN 자리 표시자를 도메인 이름으로 바꿉니다.

sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt.old
sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.key /opt/bitnami/apache2/conf/bitnami/certs/server.key.old
sudo ln -sf /etc/letsencrypt/live/DOMAIN/privkey.pem /opt/bitnami/apache2/conf/bitnami/certs/server.key
sudo ln -sf /etc/letsencrypt/live/DOMAIN/fullchain.pem /opt/bitnami/apache2/conf/bitnami/certs/server.crt
sudo /opt/bitnami/ctlscript.sh restart apache

Approach B의 Apache

다음 예제 명령에서 DOMAIN 자리 표시자를 도메인 이름으로 바꿉니다.

sudo mv /opt/bitnami/apache2/conf/server.crt /opt/bitnami/apache2/conf/server.crt.old
sudo mv /opt/bitnami/apache2/conf/server.key /opt/bitnami/apache2/conf/server.key.old
sudo ln -sf /etc/letsencrypt/live/DOMAIN/privkey.pem /opt/bitnami/apache2/conf/server.key
sudo ln -sf /etc/letsencrypt/live/DOMAIN/fullchain.pem /opt/bitnami/apache2/conf/server.crt
sudo /opt/bitnami/ctlscript.sh restart apache

Approach A의 NGINX

다음 예제 명령에서 DOMAIN 자리 표시자를 도메인 이름으로 바꿉니다.

sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt.old
sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.key /opt/bitnami/nginx/conf/bitnami/certs/server.key.old
sudo ln -sf /etc/letsencrypt/live/DOMAIN/privkey.pem /opt/bitnami/nginx/conf/bitnami/certs/server.key
sudo ln -sf /etc/letsencrypt/live/DOMAIN/fullchain.pem /opt/bitnami/nginx/conf/bitnami/certs/server.crt
sudo /opt/bitnami/ctlscript.sh restart nginx

Approach B의 NGINX

다음 예제 명령에서 DOMAIN 자리 표시자를 도메인 이름으로 바꿉니다.

sudo mv /opt/bitnami/nginx/conf/server.crt /opt/bitnami/nginx/conf/server.crt.old
sudo mv /opt/bitnami/nginx/conf/server.key /opt/bitnami/nginx/conf/server.key.old
sudo ln -sf /etc/letsencrypt/live/DOMAIN/privkey.pem /opt/bitnami/nginx/conf/server.key
sudo ln -sf /etc/letsencrypt/live/DOMAIN/fullchain.pem /opt/bitnami/nginx/conf/server.crt
sudo /opt/bitnami/ctlscript.sh restart nginx

8.    HTTPS 리디렉션을 설정합니다. 자세한 내용은 Bitnami 웹 사이트에서 다음 정보를 참조하세요.


AWS 공식
AWS 공식업데이트됨 일 년 전