저번 글에서 APM 및 워드프레스 설치를 끝냈다.
이번 글에서는 도메인을 직접 연결하고 SSL 인증을 하는 방법에 대하여 설명하겠다.
1. 도메인 구입
도메인은 여러 호스팅 업체에서 구매할 수 있으므로 카페24가 아니더라도 알아보고 원하는 곳에서 구매하면 된다. 회원가입 후 도메인 탭에 들어가서 원하는 도메인을 입력, 기간을 1년으로 설정하고 양식에 맞게 폼을 작성하여 신청한다. 이후 결제를 진행하면 도메인이 정상적으로 구매된다. 구매한 도메인은 나의서비스관리 > 도메인관리에서 확인할 수 있다.

2. 도메인 연결
AWS 콘솔 홈에 접속하여 Route 53을 검색 후 들어간다. 호스팅 영역 > 호스팅 영역 생성에 들어가서 도메인 이름에 구매한 도메인을 입력 후 생성한다.

생성된 호스팅 영역을 클릭 후 레코드 생성에 들어간다. 값에 EC2 세부 정보에서 퍼블릭 IPv4 주소를 확인하여 입력 후 레코드를 생성한다. 이후 다시 호스팅 영역으로 돌아가서 NS유형의 레코드의 값/트래픽 라우팅 대상을 확인한다.

카페24에 접속하여 나의서비스관리 > 도메인관리에 들어가서 구매한 도메인을 클릭 후 네임서버 변경에 들어간다. 다른 네임서버를 선택하고 1~4차 네임서버 값에 아까 호스팅 영역에서 확인한 값/트래픽 라우팅 대상을 모두 입력 후 변경하기를 클릭한다.

조금 기다렸다가 도메인으로 접속하면 성공적으로 설정했던 워드프레스 사이트가 뜰 것이다.
3. 도메인 SSL인증
주소창을 확인해보면 주소 맨 앞에 주의요함이라고 뜰 것이다. HTTP로의 접속은 SSL 인증이 되어있지 않아서 보안에 취약하므로, HTTPS로 통신할 수 있게 SSL인증을 해야 한다.

호스팅 업체에 신청하면 쉽게 인증이 가능하지만, 비용이 발생하기 때문에 무료 SSL 인증이 가능한 ZeroSSL에서 인증서를 발급했다. 회원 가입을 한 다음 New Certificate에 들어가 도메인을 입력한다.
90-Day Certificate를 선택한다. 무료로 사용할 수 있지만 90일이 지나면 인증서를 다시 갱신해야 한다. 이후 Free 상품을 선택하고 도메인 소유 인증을 해준다.

도메인 소유 인증이 성공적으로 진행되었다면 Certificates 탭으로 들어가서 위와 같이 SSL 인증서 파일을 다운로드 받을 수 있다.

다시 AWS 콘솔 홈으로 접속해서 Certificate Manager를 검색 후 들어가서 인증서 가져오기를 클릭한다. 각 값에 아까 다운로드 받은 인증서 ZIP 파일 압축을 풀어서 내용을 복사해 넣는다.
인증서 본문 – certificate.crt
인증서 프라이빗 키 – private.key
인증서 체인 – ca_bundle.crt

인증서 나열로 들어가서 조금 기다리면 검증 대기 중에서 발급됨으로 상태가 바뀔 것이다.

이제 HTTPS로의 포워딩을 위해 로드 밸런서를 설정해야 한다. EC2 > 로드 밸런서 > 로드 밸런서 생성으로 들어가서 Application Load Balancer를 생성한다.

알아보기 쉬운 이름으로 로드 밸런서 이름을 입력하고 매핑에서 모두 선택한다.

보안 그룹은 생성했던 EC2 인스턴스의 보안 그룹과 동일하게 설정한다.

다음과 같이 HTTPS의 리스너를 추가해주고 대상 그룹 생성을 클릭한다.

대상 유형은 인스턴스, 대상 그룹 이름을 입력하고 기본 구성 프로토콜과 상태 검사 프로토콜을 HTTPS로 설정한다.

인스턴스를 선택, 아래에 보류 중인 것으로 포함을 클릭하고 대상 그룹을 생성한다.

이후 다시 로드 밸런서 생성 폼으로 돌아가서 생성된 대상 그룹으로 HTTP, HTTPS 둘 다 지정한다.

보안 리스너 설정에서 Certificate Manager에서 등록했던 인증서를 가져오고 로드 밸런서를 생성한다.

마지막으로 Route 53 호스팅 영역으로 다시 돌아가서 A 유형의 레코드를 다음과 같이 편집한다. 로드 밸런서 이름 앞에 dualstack이 붙은 채로 추천이 뜨는데 반드시 dualstack은 지우고 설정해야 한다. 처음에 무시하고 추천 그대로 설정했다가 디버깅하느라 애먹었다…

여기까지 모두 완료하고 워드프레스 관리자에 접속 후 설정에 들어가서 워드프레스 주소, 사이트 주소를 변경한다.

새로 고침 후 도메인 접속 시 http://가 아닌 https://로 접속이 되는 것을 확인할 수 있다.

3-1. 443 포트 열기
서버 자체에 443 포트가 열려있지 않으면 HTTPS의 통신이 원활하지 않을 수 있다. PuTTY로 서버에 접속 후 다음 명령어를 통해 포트가 열려있는지 확인 후 apache_mod_ssl을 적용해야 한다.
netstat -anlp | grep 443 sudo yum install mod_ssl

