WordPress 블로그에 SSL 인증서 설치로 https 지원하기

안녕하세요. 미뇽입니다.

오늘은 제가 운영하는 블로그, tastingeverything.co.kr에 무료 SSL 인증서인 Let’s Encrypt를 적용하여 HTTPS 통신을 활성화하는 과정을 자세히 공유해 보려고 합니다.

HTTPS 적용 전 준비 사항

본격적인 SSL 인증서 설치에 앞서 몇 가지 준비가 필요합니다. 저는 다음과 같은 단계를 미리 완료했습니다.

  1. 오라클 클라우드 Free Tier 계정 생성:
    클라우드 환경에서 웹 서버를 운영하기 위해 오라클 클라우드의 Free Tier 계정을 생성했습니다.
    Oracle Cloud Free Tier 계정 만들기
  2. 오라클 클라우드에서 Ubuntu VM 인스턴스 생성:
    Ubuntu 운영체제를 기반으로 하는 가상 머신 인스턴스를 생성하여 웹 서버 환경을 구축했습니다.
    Oracle Cloud VM 인스턴스 생성 가이드
  3. Ubuntu VM Instance에 워드프레스 설치:
    생성한 Ubuntu VM 인스턴스에 Apache 웹 서버와 PHP, MySQL을 설치하고 워드프레스를 구축했습니다.
    Oracle Cloud VM Instance 에 WordPress 설치하기
  4. 도메인 발급 및 적용:
    tastingeverything.co.kr 도메인을 발급받아 오라클 클라우드 VM 인스턴스의 공인 IP 주소와 연결했습니다. DNS 설정이 완료되어야 웹사이트 접속이 가능합니다.
    IP주소에 도메인 연결하기
  5. Ubuntu VM Instance에 SSH 접속 허용:
    터미널을 통해 VM 인스턴스에 안전하게 접속하기 위해 SSH 설정을 완료했습니다.
    SSH Key 완전 정복

Let’s Encrypt를 이용한 SSL 인증서 설치하기

이제 본격적으로 SSL 인증서를 설치하는 단계입니다. Let’s Encrypt 인증서를 발급하고 관리하는 데에는 certbot 이라는 아주 편리한 도구를 사용합니다.

certbot 설치하기

certbot은 Let’s Encrypt 팀에서 개발한 자동화된 도구로, SSL/TLS 인증서 발급 및 웹 서버 설정을 간편하게 처리해 줍니다. 저는 워드프레스 설치 시 Apache 웹 서버를 사용했으므로, Apache용 certbot 플러그인을 설치하겠습니다

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update
sudo apt install certbot python3-certbot-apache

위 명령어들을 순서대로 실행하면 certbot과 Apache 연동에 필요한 패키지들이 설치됩니다.

SSL 인증서 발급

certbot 설치가 완료되면, 이제 실제 SSL 인증서를 발급받을 차례입니다. 저는 제 블로그 도메인인 tastingeverything.co.kr에 대한 인증서를 발급받기 위해 다음 명령어를 실행했습니다.

sudo certbot --apache -d tastingeverything.co.kr

이 명령어를 실행하면 certbot이 자동으로 Let’s Encrypt 서버와 통신하여 인증서 발급 과정을 진행합니다. 이 과정에서 몇 가지 질문에 답해야 합니다.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): address@email.com.  #----> 이메일 입력

가장 먼저 인증서 갱신 및 보안 관련 알림을 받을 이메일 주소를 입력합니다.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.5-February-24-2025.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y #-----> 약정 동의

Let’s Encrypt 서비스 약관을 주의 깊게 읽고 동의 여부를 묻는 질문에 Y를 입력합니다.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y #------> 계정 등록
Account registered.
Requesting a certificate for tastingeverything.co.kr

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/tastingeverything.co.kr/fullchain.pem
Key is saved at:      /etc/letsencrypt/live/tastingeverything.co.kr/privkey.pem
This certificate expires on 2025-08-25.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for tastingeverything.co.kr to /etc/apache2/sites-available/000-default-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://tastingeverything.co.kr

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:    https://letsencrypt.org/donate
 * Donating to EFF:                     https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

이후 계정 등록 여부를 묻는 질문에 답하면 인증서 발급이 완료됩니다. 위 출력 결과에서 중요한 부분은 인증서와 개인 키가 저장된 경로입니다.

  • 인증서 위치: /etc/letsencrypt/live/tastingeverything.co.kr/fullchain.pem
  • 키 위치: /etc/letsencrypt/live/tastingeverything.co.kr/privkey.pem

또한, Certbot이 자동으로 Apache 웹 서버 설정을 업데이트하여 HTTPS를 활성화했다는 메시지도 확인할 수 있습니다.

웹 서버 설정 확인

Certbot이 자동으로 설정을 완료했지만, 혹시 모를 상황에 대비하여 Apache 설정 파일을 확인해 보겠습니다. Apache 설정 파일 중 HTTPS 관련 설정을 담고 있는 000-default-le-ssl.conf 파일을 확인하여 SSL 인증서 경로 및 HTTPS 관련 설정이 제대로 적용되었는지 확인합니다.

SSL 인증서 자동 갱신 설정 확인

Let’s Encrypt 인증서는 유효 기간이 90일로 비교적 짧기 때문에 자동 갱신 설정을 해두는 것이 중요합니다. 다행히 Certbot은 인증서 발급 시 자동으로 갱신 작업을 스케줄링해 줍니다. 다음 명령어를 통해 자동 갱신 상태를 확인할 수 있습니다.

sudo systemctl status certbot.timer

실행 결과가 다음과 유사하다면 자동 갱신이 정상적으로 설정된 것입니다.

● certbot.timer - Run certbot twice daily
     Loaded: loaded (/usr/lib/systemd/system/certbot.timer; enabled; preset: enabled)
     Active: active (waiting) since Tue 2025-05-27 12:34:02 UTC; 12min ago
    Trigger: Wed 2025-05-28 05:09:54 UTC; 16h left
   Triggers: ● certbot.service

May 27 12:34:02 wordpress systemd[1]: Started certbot.timer - Run certbot twice daily.

만약 자동 갱신이 설정되어 있지 않다면, cron을 이용하여 수동으로 설정할 수 있습니다. 먼저 certbot 명령어의 위치를 확인합니다.

whereis certbot

제 환경에서는 /usr/bin/certbot에 위치하고 있네요. 이제 cron 설정을 편집합니다.

sudo crontab -e

에디터가 열리면 다음 내용을 추가하고 저장합니다.

0 0,12 * * * /usr/bin/certbot renew --quiet --no-post-hook

이 설정은 매일 0시와 12시에 자동으로 인증서 갱신을 시도하며, 갱신 과정에서 별도의 출력을 하지 않도록 --quiet 옵션을 사용했습니다.

HTTPS 접속 확인

모든 설정이 완료되었으니, 웹 브라우저를 열고 https://tastingeverything.co.kr로 접속해 봅니다. 주소창 옆에 자물쇠 아이콘이 표시된다면 HTTPS 연결이 성공적으로 이루어진 것입니다! 이제 제 블로그를 방문하는 사용자들은 안전하게 암호화된 통신을 통해 정보를 주고받을 수 있게 되었습니다.

마무리하며

오늘은 오라클 클라우드 VM 인스턴스에 설치된 워드프레스 블로그에 Let’s Encrypt를 이용하여 무료 SSL 인증서를 설치하고 HTTPS 통신을 활성화하는 과정을 상세하게 살펴보았습니다. 생각보다 간단한 과정을 통해 웹사이트의 보안을 향상시킬 수 있었던 것 같습니다.

읽어주셔서 감사합니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤