‹ 방법(으)로 돌아가기

자습서: Amazon Lightsail에서 WordPress 인스턴스와 함께 Let’s Encrypt SSL 인증서 사용

최종 업데이트 날짜: 2021년 1월 31일

중요

이 자습서에서 설명하는 단계에서는 수동 프로세스를 사용하여 SSL/TLS 인증서를 구현하는 방법을 보여줍니다. 하지만 Bitnami에서는 Bitnami HTTPS 구성(bncert) 도구를 사용하는 보다 자동화된 프로세스를 제공하며, 해당 도구는 일반적으로 Lightsail의 WordPress 인스턴스에 사전 설치되어 있습니다. 이 자습서의 수동 단계를 따르지 않고 해당 도구를 사용하는 것이 좋습니다. 이 자습서는 bncert 도구가 제공되기 전에 작성되었습니다. bncert 도구를 사용하는 방법에 대한 자세한 내용은 Amazon Lightsail의 WordPress 인스턴스에서 HTTPS 활성화를 참조하세요.

Amazon Lightsail을 사용하면 Lightsail 로드 밸런서를 사용하여 SSL/TLS를 사용하는 웹사이트 및 애플리케이션을 쉽게 보호할 수 있습니다. 그러나 Lightsail 로드 밸런서를 사용하는 것이 일반적으로 올바른 선택이 아닐 수도 있습니다. 사이트에서 로드 밸런서가 제공하는 확장성 또는 내결함성을 필요로 하지 않거나 비용 최적화를 원할 수도 있습니다. 후자의 경우에는 Let's Encrypt를 사용하여 무료 SSL 인증서를 얻을 수 있으며 그런 경우 아무런 문제가 되지 않습니다. 이러한 인증서를 Lightsail 인스턴스와 통합할 수 있습니다.

후자의 경우에는 Let's Encrypt를 사용하여 무료 SSL 인증서를 얻을 수 있으며 그런 경우 아무런 문제가 되지 않습니다. 이러한 인증서를 Lightsail 인스턴스와 통합할 수 있습니다. 이 자습서에서는 Certbot을 사용하여 Let's Encrypt 와일드카드 인증서를 요청하고 Really Simple SSL 플러그인을 사용하여 WordPress 인스턴스와 통합하는 방법을 보여줍니다.

목차

시작하기 전에

이 자습서를 시작하기 전에 다음을 고려해야 합니다.

Bitnami HTTPS 구성(bncert) 도구를 대신 사용

이 자습서에서 설명하는 단계에서는 수동 프로세스를 사용하여 SSL/TLS 인증서를 구현하는 방법을 보여줍니다. 하지만 Bitnami에서는 Bitnami HTTPS 구성(bncert) 도구를 사용하는 보다 자동화된 프로세스를 제공하며, 해당 도구는 일반적으로 Lightsail의 WordPress 인스턴스에 사전 설치되어 있습니다. 이 자습서의 수동 단계를 따르지 않고 해당 도구를 사용하는 것이 좋습니다. 이 자습서는 bncert 도구가 제공되기 전에 작성되었습니다. bncert 도구를 사용하는 방법에 대한 자세한 내용은 Amazon Lightsail의 WordPress 인스턴스에서 HTTPS 활성화를 참조하세요.

WordPress 인스턴스의 Linux 배포 식별

'Bitnami 인증' 인스턴스에서 사용하는 Linux 배포는 2020년 7월에 Ubuntu에서 Debian으로 변경되었습니다. 변경 후 생성된 모든 'Bitnami 인증' 인스턴스는 Debian Linux 배포를 사용합니다. 변경 전에 생성된 인스턴스는 Ubuntu Linux 배포를 계속 사용합니다. 이러한 변화로 인스턴스의 Linux 배포에 따라 자습서의 일부 단계가 달라집니다. 이 자습서에서 사용할 단계를 알 수 있도록 인스턴스의 Linux 배포를 식별해야 합니다. 인스턴스의 Linux 배포를 식별하려면 uname -a 명령을 실행합니다. 응답은 Ubuntu 또는 Debian을 인스턴스의 Linux 배포로 표시합니다.

인스턴스에 적용되는 자습서 접근 방식 식별

Bitnami는 많은 스택에 대한 파일 구조를 수정하는 중입니다. 이 자습서의 파일 경로는 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단계: 사전 조건 완료

아직 수행하지 않은 경우 다음 사전 조건을 완료하십시오.

사전 조건을 완료한 후 이 자습서의 다음 단원으로 계속 진행합니다.

2단계: Lightsail 인스턴스에 Certbot 설치

Certbot은 Let's Encrypt에서 인증서를 요청하고 이를 웹 서버에 배포하는 데 사용되는 클라이언트입니다. Let's Encrypt는 ACME 프로토콜을 사용하여 인증서를 발행하고 Certbot은 Let's Encrypt와 상호 작용하는 ACME 사용 클라이언트입니다.

    Lightsail 인스턴스에 Certbot을 설치하려면

  1. Lightsail 콘솔에 로그인합니다.

  2. Lightsail 홈 페이지에서 연결할 인스턴스에 대한 SSH 빠른 연결 아이콘을 선택합니다.

    Lightsail 홈 페이지의 SSH 빠른 연결.
  3. Lightsail 브라우저 기반 SSH 세션이 연결되면 다음 명령을 입력하여 인스턴스의 패키지를 업데이트합니다.

    sudo apt-get update
    인스턴스의 패키지 업데이트
  4. 다음 명령을 입력하여 소프트웨어 속성 패키지를 설치합니다. Certbot의 개발자는 PPA(Personal Package Archive)를 사용하여 Certbot을 배포합니다. 소프트웨어 속성 패키지를 사용하면 PPA를 사용하여 보다 효율적으로 작업할 수 있습니다.

    sudo apt-get install software-properties-common

    참고

    Could not get lock 명령을 실행할 때 sudo apt-get install 오류가 발생하면 약 15분 정도 기다린 후 다시 시도합니다. 이 오류는 Apt 패키지 관리 도구를 사용하여 무인 업그레이드를 설치하는 cron 작업으로 인해 발생할 수 있습니다.

  5. 다음 명령을 입력하여 GPG 패키지를 설치하고 Certbot을 로컬 apt 리포지토리에 추가합니다.

    참고

    5단계는 Ubuntu Linux 배포를 사용하는 인스턴스에만 적용됩니다. 인스턴스가 Debian Linux 배포를 사용하는 경우 이 단계를 건너뜁니다.

    sudo apt-get install gpg -y
    sudo apt-add-repository ppa:certbot/certbot -y
  6. 다음 명령을 입력하여 새 리포지토리를 포함하도록 apt를 업데이트합니다.

    sudo apt-get update -y
  7. 다음 명령을 입력하여 Certbot을 설치합니다.

    sudo apt-get install certbot -y

    이제 Certbot이 Lightsail 인스턴스에 설치됩니다.

  8. 브라우저 기반 SSH 터미널 창을 열린 상태로 유지하십시오. 이 자습서의 뒷부분에서 다시 해당 세션으로 돌아옵니다. 이 자습서의 다음 섹션으로 계속 진행합니다.

3단계: Let’s Encrypt SSL 와일드카드 인증서 요청

Let's Encrypt에서 인증서를 요청하는 프로세스를 시작합니다. Certbot을 사용하여 도메인 및 하위 도메인에 대해 단일 인증서를 사용할 수 있는 와일드카드 인증서를 요청합니다. 예를 들어 example.com 최상위 도메인과 blog.example.comstuff.example.com 하위 도메인에 대해 단일 와일드카드 인증서가 작동합니다.

    Let's Encrypt SSL 와일드카드 인증서를 요청하려면

  1. 이 자습서의 2단계에서 사용된 것과 동일한 브라우저 기반 SSH 터미널 창에서 다음 명령을 입력하여 도메인에 대해 환경 변수를 설정합니다. 이제 명령을 더 효율적으로 복사하고 붙여 넣어 인증서를 얻을 수 있습니다. domain을 등록된 도메인 이름으로 바꿔야 합니다.

    DOMAIN=domain
    WILDCARD=*.$DOMAIN

    예:

    DOMAIN=example.com
    WILDCARD=*.$DOMAIN
  2. 다음 명령을 입력하여 변수가 올바른 값을 반환하는지 확인합니다.

    echo $DOMAIN && echo $WILDCARD

    다음과 유사한 결과가 출력되어야 합니다.

    도메인 환경 변수를 확인합니다.
  3. 다음 명령을 입력하여 대화형 모드에서 Certbot을 시작합니다. 이 명령은 DNS 문제에 대해 수동 권한 부여 방법을 사용하여 도메인 소유권을 확인하도록 Certbot에 지시하며, 최상위 도메인 및 하위 도메인에 대한 와일드카드 인증서를 요청합니다.

    sudo certbot -d $DOMAIN -d $WILDCARD --manual --preferred-challenges dns certonly
  4. 메시지가 표시되면 갱신 및 보안 고지 사항에 사용될 이메일 주소를 입력합니다.

  5. Let's Encrypt 서비스 계약 조건을 읽습니다. 모두 읽은 다음 동의하면 A를 누릅니다. 동의하지 않는 경우 Let's Encrypt 인증서를 얻을 수 없습니다.

  6. 이메일 주소를 공유하라는 메시지와 IP 주소가 기록된다는 경고에 적절하게 응답합니다.

  7. 이제 Let’s Encrypt에 지정된 도메인을 소유하고 있는지 확인하라는 메시지가 표시됩니다. TXT 레코드를 도메인의 DNS 레코드에 추가하여 이 작업을 수행할 수 있습니다. 다음 예와 같이 한 세트의 TXT 레코드 값이 제공됩니다.

    참고

    확인에 사용해야 하는 하나 또는 여러 개의 TXT 레코드를 Let's Encrypt에서 제공할 수 있습니다. 이 예에서는 확인에 사용할 두 개의 TXT 레코드가 제공되었습니다.

    Let's Encrypt 인증서용 TXT 레코드
  8. Lightsail 브라우저 기반 SSH 세션을 열린 상태로 유지하십시오. 이 자습서의 뒷부분에서 다시 해당 세션으로 돌아옵니다. 이 자습서의 다음 섹션으로 계속 진행합니다.

4단계: Lightsail의 도메인 DNS 영역에 TXT 레코드 추가

도메인의 DNS 영역에 TXT 레코드를 추가하면 도메인 소유권이 확인됩니다. 설명을 위해 Lightsail DNS 영역을 사용하겠습니다. 하지만 이 단계는 일반적으로 도메인 등록 대행자가 호스팅하는 다른 DNS 영역과 비슷할 수 있습니다.

참고

도메인에 대해 Lightsail DNS 영역을 만드는 방법에 대한 자세한 내용은 DNS 영역을 생성하여 Amazon Lightsail에서 도메인의 DNS 레코드 관리를 참조하십시오.

    Lightsail의 도메인 DNS 영역에 TXT 레코드를 추가하려면

  1. Lightsail 홈 페이지에서 네트워킹 탭을 선택합니다.

  2. 페이지의 DNS 영역 섹션에서 Certbot 인증서 요청에서 지정한 도메인의 DNS 영역을 선택합니다.

  3. DNS 영역 편집기에서 레코드 추가를 선택합니다.

    Lightsail 콘솔의 DNS 영역 편집기.
  4. 레코드 유형 드롭다운 메뉴에서 TXT 레코드를 선택합니다.

  5. 다음 스크린샷과 같이 하위 도메인응답 필드에 Let's Encrypt 인증서 요청에 지정된 값을 입력합니다.

    Lightsail DNS 영역 편집기의 TXT 레코드.
  6. 저장 아이콘을 선택합니다.

  7. 3 ~ 6단계를 반복하여 Let's Encrypt 인증서 요청에 지정된 두 번째 TXT 레코드 세트를 추가합니다.

  8. Lightsail 콘솔 브라우저 창을 열린 상태로 유지하십시오. 이 자습서의 뒷부분에서 다시 해당 세션으로 돌아옵니다. 이 자습서의 다음 섹션으로 계속 진행합니다.

5단계: TXT 레코드가 전파되었는지 확인

TXT 레코드가 인터넷의 DNS에 전파되었는지 확인하려면 MxToolbox 유틸리티를 사용합니다. DNS 레코드 전파는 DNS 호스팅 공급자 및 DNS 레코드에 대해 구성된 TTL(Time to Live)에 따라 다소 시간이 걸릴 수 있습니다. 이 단계를 완료하고 Certbot 인증서 요청을 계속하기 전에 TXT 레코드가 전파되었는지 확인하는 것이 중요합니다. 그렇지 않으면 인증서 요청이 실패합니다.

    TXT 레코드가 인터넷의 DNS에 전파되었는지 확인하려면

  1. 새 브라우저 창을 열고 https://mxtoolbox.com/TXTLookup.aspx로 이동합니다.

  2. 다음 텍스트를 텍스트 상자에 입력합니다. domain을 도메인으로 바꿉니다.

    _acme-challenge.domain

    예:

    _acme-challenge.example.com
    MXTookbox TXT 레코드 조회입니다.
  3. TXT Lookup(TXT 조회)을 선택하여 점검을 실행합니다.

  4. 다음 응답 중 하나가 발생합니다.

    • TXT 레코드가 인터넷의 DNS에 전파되면 다음 스크린샷과 비슷한 응답이 표시됩니다. 브라우저 창을 닫고 이 자습서의 다음 단원으로 계속 진행합니다.

      TXT 레코드가 전파되었는지 확인
    • TXT 레코드가 인터넷의 DNS에 전파되지 않은 경우 DNS Record not found(DNS 레코드를 찾을 수 없음) 응답이 표시됩니다. 도메인의 DNS 영역에 올바른 DNS 레코드를 추가했는지 확인합니다. 올바른 레코드를 추가한 경우 도메인의 DNS 레코드가 전파되도록 잠시 기다렸다가 TXT 조회를 다시 실행합니다.

6단계: Let's Encrypt SSL 인증서 요청 완료

WordPress 인스턴스의 Lightsail 브라우저 기반 SSH 세션으로 돌아가서 Let's Encrypt 인증서 요청을 완료합니다. Certbot은 SSL 인증서, 체인 및 키 파일을 WordPress 인스턴스의 특정 디렉터리에 저장합니다.

    Let's Encrypt SSL 인증서 요청을 완료하려면

  1. WordPress 인스턴스의 Lightsail 브라우저 기반 SSH 세션에서 Enter 키를 눌러 Let's Encrypt SSL 인증서 요청을 계속 진행합니다. 성공하면 다음 스크린샷과 비슷한 응답이 나타납니다.

    Let's Encrypt 인증서 요청에 성공했습니다.

    이 메시지는 인증서, 체인 및 키 파일이 /etc/letsencrypt/live/domain/ 디렉터리에 저장되어 있음을 확인합니다. domain/etc/letsencrypt/live/example.com/과 같은 도메인으로 바꿔야 합니다.

  2. 메시지에 지정된 만료 날짜를 적어 둡니다. 이 날짜를 사용하여 해당 날짜까지 인증서를 갱신합니다.

    Let's Encrypt 인증서 만료 날짜
  3. 이제 Let’s Encrypt SSL 인증서가 있으므로 이 자습서의 다음 단원으로 계속 진행합니다.

Let's Encrypt SSL 인증서 파일을 WordPress 인스턴스의 Apache 서버 디렉터리에 연결하는 링크를 생성합니다. 또한 필요할 때를 대비하여 기존 인증서를 백업합니다.

    Let's Encrypt 인증서 파일을 Apache 서버 디렉터리에 연결하는 링크를 생성하려면

  1. WordPress 인스턴스에 대한 Lightsail 브라우저 기반 SSH 세션에서 다음 명령을 입력하여 기본 서비스를 중지합니다.

    sudo /opt/bitnami/ctlscript.sh stop

    다음과 유사한 응답이 나타납니다.

    인스턴스 서비스 중지
  2. 다음 명령을 입력하여 도메인에 대한 환경 변수를 설정합니다. 명령을 더 효율적으로 복사하고 붙여 넣어 인증서 파일을 연결할 수 있습니다. domain을 등록된 도메인 이름으로 바꿔야 합니다.

    DOMAIN=domain

    예:

    DOMAIN=example.com
  3. 다음 명령을 입력하여 변수가 올바른 값을 반환하는지 확인합니다.

    echo $DOMAIN

    다음과 유사한 결과가 출력되어야 합니다.

    도메인 환경 변수를 확인합니다.
  4. 다음 명령을 개별적으로 입력하여 백업으로 기존 인증서 파일 이름을 다시 지정합니다. 다양한 배포 및 파일 구조에 대한 정보는 이 자습서의 시작 부분에 있는 중요 블록을 참조하십시오.

    • Debian Linux 배포의 경우

      접근 방식 A(시스템 패키지를 사용한 Bitnami 설치):

      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

      접근 방식 B(자체 포함 Bitnami 설치):

      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
    • Ubuntu Linux 배포를 사용하는 이전 인스턴스의 경우:

      sudo mv /opt/bitnami/apache/conf/bitnami/certs/server.crt /opt/bitnami/apache/conf/bitnami/certs/server.crt.old
      sudo mv /opt/bitnami/apache/conf/bitnami/certs/server.key /opt/bitnami/apache/conf/bitnami/certs/server.key.old
      sudo mv /opt/bitnami/apache/conf/bitnami/certs/server.csr /opt/bitnami/apache/conf/bitnami/certs/server.csr.old
  5. 다음 명령을 개별적으로 입력하여 Apache 디렉터리에 Let's Encrypt 인증서 파일에 대한 링크를 생성합니다. 다양한 배포 및 파일 구조에 대한 정보는 이 자습서의 시작 부분에 있는 중요 블록을 참조하십시오.

    • Debian Linux 배포의 경우

      접근 방식 A(시스템 패키지를 사용한 Bitnami 설치):

      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

      접근 방식 B(자체 포함 Bitnami 설치):

      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
    • Ubuntu Linux 배포를 사용하는 이전 인스턴스의 경우:

      sudo ln -s /etc/letsencrypt/live/$DOMAIN/privkey.pem /opt/bitnami/apache/conf/bitnami/certs/server.key
      sudo ln -s /etc/letsencrypt/live/$DOMAIN/fullchain.pem /opt/bitnami/apache/conf/bitnami/certs/server.crt
  6. 다음 명령을 입력하여 이전에 중지한 기본 서비스를 시작합니다.

    sudo /opt/bitnami/ctlscript.sh start

    다음과 유사한 결과가 출력되어야 합니다.

    인스턴스 서비스 시작

    이제 WordPress 인스턴스의 SSL 인증서 파일이 올바른 디렉터리에 있습니다.

  7. 이 자습서의 다음 섹션으로 계속 진행합니다.

8단계: Really Simple SSL 플러그 인을 사용하여 SSL 인증서를 WordPress 사이트와 통합

Really Simple SSL 플러그 인을 WordPress 사이트에 설치하고 SSL 인증서를 통합하는 데 사용합니다. Really Simple SSL은 또한 사이트를 방문하는 사용자가 항상 HTTPS 연결을 유지하도록 HTTPS-HTTP 리디렉션을 구성합니다.

    Really Simple SSL 플러그 인을 사용하여 SSL 인증서를 WordPress 사이트와 통합하려면

  1. WordPress 인스턴스의 Lightsail 브라우저 기반 SSH 세션에서 다음 명령을 입력하여 wp-config.phphtaccess.conf 파일을 쓰기 가능하도록 설정합니다. Really Simple SSL 플러그 인에서 wp-config.php 파일에 기록하여 인증서를 구성합니다.

    • Debian Linux 배포를 사용하는 최신 인스턴스의 경우:

      sudo chmod 666 /opt/bitnami/wordpress/wp-config.php && sudo chmod 666 /opt/bitnami/apache/conf/vhosts/htaccess/wordpress-htaccess.conf
    • Ubuntu Linux 배포를 사용하는 이전 인스턴스의 경우:

      sudo chmod 666 /opt/bitnami/apps/wordpress/htdocs/wp-config.php && sudo chmod 666 /opt/bitnami/apps/wordpress/conf/htaccess.conf
  2. 새 브라우저 창을 열고 WordPress 인스턴스의 관리 대시보드에 로그인합니다.

    참고

    자세한 내용은 Amazon Lightsail의 'Bitnami 인증' 인스턴스에 대한 애플리케이션 사용자 이름과 암호 가져오기를 참조하십시오.

  3. 왼쪽 탐색 창에서 플러그인을 선택합니다.

  4. 플러그인 페이지 상단에서 새로 추가를 선택합니다.

    WordPress에 새 플러그인을 추가합니다.
  5. Really Simple SSL을 검색합니다.

  6. 검색 결과에서 Really Simple SSL 플러그 인 옆에 있는 지금 설치(Install Now)를 선택합니다.

    WordPress용 Really Simple SSL 플러그 인
  7. 설치가 완료되면 활성화를 선택합니다.

  8. 나타나는 메시지에서 Go ahead, activate SSL!(SSL 활성화)을 선택합니다. WordPress 인스턴스의 관리 대시보드에 대한 로그인 페이지로 리디렉션될 수 있습니다.

    이제 WordPress 인스턴스가 SSL 암호화를 사용하도록 구성되었습니다. 또한 이제 WordPress 인스턴스가 HTTP에서 HTTPS로의 연결을 자동으로 리디렉션하도록 구성되었습니다. 방문자가 http://example.com으로 이동하면 자동으로 암호화된 HTTPS 연결(즉, https://example.com)로 리디렉션됩니다.

9단계: 90일마다 Let's Encrypt 인증서 갱신

Let's Encrypt 인증서는 90일 동안 유효합니다. 인증서는 만료되기 30일 전에 갱신할 수 있습니다. Let's Encrypt 인증서를 갱신하려면 인증서를 가져오는 데 사용한 원래 명령을 실행합니다. 이 자습서의 Let’s Encrypt SSL 와일드카드 인증서 요청 단원에 나오는 단계를 반복합니다.