아마존 라이트세일 워드프레스 인스턴스에 Let's Encrypt SSL 인증서 설치하기

이전 글에서 아마존 라이트세일 (Amazon Lightsail)에서 WordPress 인스턴스를 생성하고 도메인을 연결하는 방법을 살펴보았습니다.

아마존 라이트세일에 워드프레스를 설치하였다면 무료 Let's Encrypt SSL 인증서를 설치할 수 있습니다. 사이트에 보안서버 SSL 인증서가 적용되지 않으면 크롬 브라우저에 "주의 요함" 경고가 표시되고 SEO에 부정적인 영향을 미칩니다.

보안서버 SSL 미적용 사이트에 주의 요함 경고 표시

SSL 인증서는 국내 웹호스팅에서는 대부분 유료로 판매하고 있습니다. 카페24의 경우 연간 38,500원에 구입이 가능하고 와일드카드 SSL 인증서는 연간 462,000원에 달합니다. (서브도메인에 SSL을 적용하면 와일드카드 인증서가 필요합니다.)

카페24 보안서버 SSL 인증서 가격

아마존 라이트세일을 이용하면 Let's Encrypt SSL 인증서를 무료로 설치하여 이용할 수 있습니다. 참고로 블루호스트나 사이트그라운드 같은 해외호스팅에서도 모든 도메인에 대하여 SSL 인증서를 무료로 제공하며 매우 쉽게 SSL 인증서 설치가 가능합니다("해외 호스팅: 블루호스트와 사이트그라운드 비교" 참고).

아마존 라이트세일에 Let's Encrypt SSL 인증서를 설치하는 방법이 설명된 글을 검색해보면 몇 가지 글이 검색됩니다만, 가장 좋은 자료는 아마존에서 제공하는 문서 같습니다. 다음 문서를 참고하여 아마존 라이트세일에 SSL 인증서를 설치할 수 있습니다.

문서가 충실하게 작성되었으므로 리눅스 서버에 익숙한 분들은 어려움 없이 쉽게 SSL 인증서를 설치할 수 있을 것입니다. 처음 접하는 분들은 쉽지 않게 느껴질 수 있지만, 먼저 스냅샷을 만든 다음 진행하면 작업이 수월해질 것입니다. 그러면 중도에 오류가 발생하면 인스턴스를 삭제하고, 스냅샷을 이용하여 다시 인스턴스로 생성하고 과정을 반복할 수 있습니다.

스냅샷은 인스턴스 페이지에서 해당 인스턴스 이름을 선택한 다음 '스냅샷' 메뉴에서 생성할 수 있습니다.

아마존 라이트세일 스냅샷 만들기
인스턴스 페이지에서 인스턴스 선택

위와 같은 그림이 표시되면 인스턴스 이름을 클릭합니다.

아마존 라이트세일 스냅샷 만들기 방법

스냅샷 탭을 클릭하고 수동 스냅샷 아래의 "스냅샷 생성"을 클릭하도록 합니다.

아마존 라이트세일에서 스냅샷 기능은 유료로 제공되고 있습니다. 하지만 그리 많은 비용이 청구되지 않으므로 스냅샷 기능을 활용하여 인스턴스를 통째로 백업을 받아놓을 수 있습니다.

아마존 문서를 참고하여 SSL 인증서를 설치하는 경우 TXT 레코드를 추가하는 과정이 있습니다. TXT 레코드는 2개를 추가해야 하고, 추가한 후에는 https://mxtoolbox.com/TXTLookup.aspx 사이트에서 MX 레코드가 제대로 추가되었는지 확인한 후에 진행하면 좋습니다. 레코드를 추가하고 바로 진행하면 오류가 발생할 수 있습니다. (이 부분에서 여러 차례 TXT 레코드 확인에 실패하여 조금 헤매었습니다.ㅎ)

DNS MX 조회 서비스

그리고 작업이 완료된 후에 다음 과정을 통해 http를 https로 리디렉션시켜줄 수 있습니다. SSH에 접속한 상태에서 다음 명령을 입력합니다.

sudo nano /opt/bitnami/apps/wordpress/conf/httpd-prefix.conf

그런 다음 아래 두 라인을 추가하도록 합니다.

RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R=301,L]

편집은 nano 대신 vi를 이용해도 됩니다. 개인적으로는 nano가 편해서 이 편집기를 사용합니다.

http를 https로 리디렉션시키기

변경 사항을 저장한 후에 다음 명령을 실행하여 apache를 재시작합니다.

sudo /opt/bitnami/ctlscript.sh restart apache

SSL 인증서 설치를 완료한 후에 워드프레스에 로그인한 후에 설정 > 일반에서 워드프레스 주소와 사이트 주소를 변경해야 합니다. 하지만 사이트 주소 변경 부분이 막혀 있을 것입니다. 그런 경우 wp-config.php 파일에서 약간의 수정을 해야 합니다.

다음 명령을 실행하도록 합니다.

cd /opt/bitnami/apps/wordpress/htdocs
sudo nano wp-config.php

그러면 wp-config.php 파일 편집 화면이 표시됩니다. wp-config.php 파일에서 다음 두 라인을 찾습니다.

define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/');
define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/');

위의 두 라인에서 http://를 https://로 변경하도록 합니다.

define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/');
define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/');

SSL 설치 작업이 복잡해보이지만 스냅샷을 활용하면 작업이 수월해질 것입니다.

저렴한 웹호스팅 서비스 - 블루호스트

참고:

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

6개 댓글

  1. DNS TXT 레코드를 아직 생성하지 않은 상태에서 SSH 세션의 엔터 키(continue)를 먼저 눌렀더니 엉켜 버렸네요.. 그 뒤로 DNS 레코드 추가가 안되면서 인증서는 이미 설치가 되어 있다며 리뉴얼 여부만 묻습니다.. 인스턴스를 지우고 다시 시작해야 할까요?(스냅샷도 찍지 않았습니다ㅜㅜ)

    1. 안녕하세요, Ale님. 블루호스트 등에서 간혹 비슷한 상황을 경험한 적이 있습니다. DNS 레코드를 변경하면 전파(Propagation)되는 데 1~2일 정도 걸립니다. 정보가 완전히 전파되지 않은 상황에서 인증서 설치를 시도하면 오류가 발생합니다. 그런 경우 1~2일 정도 기다리면 문제가 해결되는 경우가 있고, 그렇지 않은 경우에는 고객 지원 담당자에게 연락하여 문제를 해결하곤 했습니다.

      아마존에서 이런 경우 DNS 정보 변경 후 1~2일 정도 기다려 보시고 문제가 해결되지 않으면 구글을 검색하여 인증서를 삭제한 다음 다시 설치해보는 것은 어떨까요?

  2. 안녕하세요, 블로그글 잘읽고 있습니다. 다름이 아니라 이방법대로 인증서 설치를 했는데 2차도메인의 경우 계속해서 인증이 안되고 있어서요ㅠ blog.도메인.com 이런 형식의 주소인데, 혹시 2차도메인 ssl 적용 방법이나 기존 발급된 인증서에 추가? 하는 방법이 달리 있을낀요

    1. 안녕하세요, 담비쏭님.

      아마존 라이트세일을 이용하고 있지 않아서 확인은 해드릴 수 없지만 서브도메인에서도 마찬가지 방식으로 접근이 가능할 것 같습니다.

      A new subdomain is no different than an entirely new domain, just follow whatever instructions are appropriate for your software.

      And be careful because some softwares include their own acme client and don’t play nice with others.

      Let's Encrypt 커뮤니티에 올라온 글을 참고해보세요.

      https://community.letsencrypt.org/t/how-to-ssl-installation-for-new-subdomain/118309

  3. 안녕하세요. 포스팅보면서 라이트세일로 이전하는데 많은 도움이 되었습니다. 혹시 브라우저 SSH 접속해서 편집하고 저장하는 방법은 어떻게 해야하나요?

댓글 남기기

* 이메일 정보는 공개되지 않습니다.