Contents
보통 웹서버를 필요하면 비교적 비용이 적은 linux 서버에 설치를 하게 되는데요. Ubuntu (20.04 LTS) 서버에 직접 설치한 워드프레스에 무료로 인증서를 적용하고 자동으로 갱신하는 방법에 대해 세상 쉽게 따라할 수 있도록 준비 했습니다.
무료 인증서를 지원해주는 Let’s Encrypt 라는 인증기관에서 3개월짜리 인증서를 무료로 발급받고, 인증서가 만료되는 시점에 자동으로 갱신할 수 있도록 하는 설정하는 방법에 대한 내용의 글입니다.
사전준비
인증서를 발급받기 위한 도메인이 준비되어 있어야 합니다.
도메인에 워드프레스 서버의 공용IP 주소를 지칭하는 A 레코드 등록이 완료되어 있어야 합니다.

아직 도메인 구입을 안했는데 어떻게 구입해야 하는지 모르겠다면 구글링~
IP주소로 워드프레스에 접근이 가능해야 합니다.

서버에 ssh 접속 (생략)
가장먼저 ubuntu(서버)에 접속이 가능해야 합니다. 서버에 접속하는 방법에 대한 설명은 생략하겠습니다.
Certbot 설치
apache웹서버에서 인증서 적용과 자동갱신을 위해 두 개의 패키지가 필요합니다.
- certbot : let’s encrypt에서 인증서 발급받기위한 프로그램
- python3-certbot-apache : apache에서 certbot을 사용할 수 있도록 하는 역할
sudo apt update
sudo apt install certbot python3-certbot-apache

가상 호스트 구성
도메인에 대한 VirtualHost블록을 설정해줘야 합니다.
아래 명령줄에서 <your_domain>부분을 설정하려는 도메인으로 변경 후 nano편집기를 열어줍니다.
sudo nano /etc/apache2/sites-available/<your_domain>.conf
만약 도메인 이름이 www.mydomain.com 이라면 아래와 같이 입력해 줍니다.
sudo nano /etc/apache2/sites-available/mydomain.com.conf
ServerName mydomain.com
ServerAlias www.mydomain.com


nano 편집기에서 입력을 마치고 저장 후 종료 합니다. (Ctrl + S) (Ctrl + X)
추가한 호스트를 활성화 시켜줍니다.
sudo a2ensite mydomain.com.conf
팁) 호스트 비활성화
sudo a2dissite mydomain.com.conf
설정에 이상이 없는지 체크 해 봅니다. Syntax OK가 출력되어야 합니다.
sudo apache2ctl configtest

정상으로 확인이 되었으면 웹서버(apache2)를 다시 로드 합니다.
sudo systemctl reload apache2

방화벽 설정
가상머신의 ubuntu 들은 방화벽에 해제 되어 있는 경우가 있습니다.
아래 명령어로 방화벽이 설정되어 있는지 확인합니다.
sudo ufw status

저의 경우 방화벽에 해제 되어 있는 상태 입니다. 방화벽 사용하지 않으려면 방화벽 설정 과정은 스킵하셔도 됩니다. (저는 방화벽 사용하지 않아서 이 과정은 스킵했습니다.)
만약 아래 이미지 처럼 방화벽이 활성화 되어 있는데 허용된 포트가 없다!!

그러면 아래 명령어로 apache에 대해 인바운드를 트래픽을 허용해줍니다.
sudo ufw allow 'Apache Full'
sudo ufw status

저는 public cloud에 있는 가상머신이라 ubuntu의 방화벽은 사용하지 않기에 비활성화 상태를 유지하겠습니다.

SSL 인증서 받기
certbot의 apache플러그인으로 인증서를 자동으로 받고 apache에 설정을 진행 하도록 합니다.
certbot 의 –apache 플러그인을 사용하면 인증서 다운로드 후 여기저기 파일들에 일일이 설정하지 않아도 플러그인이 알아서 진행해줍니다.
sudo certbot --apache

- 갱신 알람 및 보안 고지에 사용될 이메일 주소를 입력합니다.
- Let’s Encrypt의 서비스 약관에 동의여부 : 당연하지만 거절하면 진행불가
- 뉴스나 기타 정보를 받기위해 구독을 할 것인가?
- 위 단계서 입력한 ServerName, ServerAlias의 나열된 모든 도메인을 등록하려면 그냥 엔터, 일부만 하려면 쉼표나 공백으로 구분해서 작성해주시면 됩니다. 저는 테스트용이라 root도메인 하나만 입력했습니다.
- HTTP로 들어오는 트래픽을 HTTPS로 리디렉션 할 것인가?
Certbot 자동갱신 확인
위 단계까지 진행하면 사실상 인증서 발급부터 자동갱신까지 모든 설정이 완료된 상태 입니다.
타이머 설정 확인
자동 갱신이 제때 이뤄질 수 있게 하는 타이머가 설정되어 있는지 확인합니다.
sudo systemctl status certbot.timer

인증서 갱신 리허설
cerbot의 리허설(–dry-run) 옵션으로 실제 인증서 갱신이 진행될 때를 그대로 재현해서 동작이 이상이 없는지 사전에 확인해 봅니다.
sudo certbot renew --dry-run

오류 없이 잘 진행되었습니다. 마음 놓을 수 있겠죠? 그래도 몇 차례 갱신할 때는 신경을 좀 써야 겠습니다.
워드프레스 주소 URL 변경
워드프레스 > 설정 > 일반 으로 이동하여 워드프레스 주소와 사이트 주소를 변경해 줍니다.

최종 테스트
브라우저에서 도메인으로 접속확인해봅니다.

끝~ 워드프레스에 SSL 인증서 적용이 완벽하게 끝났습니다.
서브도메인 인증서를 추가/제거 방법
나중에 추가된 내용으로 위에 설정했던 도메인과 이름이 같지 않지만 방식은 동일 합니다.
위 까지의 과정으로 최초에 blog.metanity.space 라는 도메인만 인증서를 발급 했었다가
나중에 it.blog.metanity.space 도메인을 추가 했을 때 사용한 커맨드 입니다.
도메인 추가
아래 보면 아시겠지만 처음 만들었던 인증서 이름과 도메인 지정 후 인증서를 새로 발급받을 할 도메인을 추가합니다.
sudo certbot --cert-name blog.metanity.space -d blog.metanity.space -d it.blog.metanity.space

도메인 제거
도메인 추가와 동일한 방식으로 인증서를 제거할 수 있습니다.
만약 현재 aaa.company.com, bbb.company.com 두 개의 인증서가 적용되어 있는 상태에서 bbb.company.com을 제거한다고 했을 때 아래와 같이 사용이 가능합니다.
sudo certbot --cert-name aaa.company.com -d aaa.company.com
그냥 bbb.company.com을 제외 시켜 주시면 됩니다.
기타
Ubuntu 20.04 외 다른 종류나 버전에서의 인증서 설정방법이 궁굼하시면 아래 링크에서 확인 가능합니다.

인증서 추가에 참고한 문서 – https://www.fntec.net/article.php?no=216
만약 입문용 가상머신을 무료로 사용해보고 싶으시면 링크를 참고해 주세요