[Linux] Let's Encrypt로 무료 SSL 인증서 발급받기

웹사이트를 운영한다면 사용자와 서버 간 데이터를 안전하게 암호화하기 위해 HTTPS를 적용하는 것이 필수입니다.
다행히 Let's Encrypt를 이용하면 누구나 무료로 SSL 인증서를 발급받아 사용할 수 있습니다.

리눅스 서버에 Let's Encrypt를 사용해 무료 SSL 인증서를 발급받고, Nginx/Apache에 적용하는 과정을 알려드리겠습니다.

 

 

1 Certbot 설치하기

Let's Encrypt 인증서를 쉽게 관리할 수 있는 툴이 certbot입니다.

✔ Ubuntu/Debian 계열

sudo apt update
sudo apt install certbot python3-certbot-nginx

✔ CentOS/RHEL 계열

sudo dnf install epel-release
sudo dnf install certbot python3-certbot-nginx

Apache를 사용 중이라면 python3-certbot-apache를 설치하세요.

 

 

2. 포트 확인하기

인증서 발급 과정에서 인증을 위해 80, 443 포트가 열려 있어야 합니다.
방화벽 설정을 꼭 확인하세요.

✔ UFW (Ubuntu)

sudo ufw allow 'Nginx Full'
sudo ufw allow 'Apache Full'

✔ firewalld (CentOS/RHEL)

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

 

 

3. Nginx에 SSL 인증서 발급 및 자동 설정

Nginx로 서비스 중이라면 certbot이 자동으로 설정까지 해줍니다.

sudo certbot --nginx -d example.com -d www.example.com

- -d 옵션으로 여러 도메인을 한꺼번에 등록할 수 있어요.
- certbot은 가상 호스트 설정을 자동으로 수정하여 HTTPS 설정을 완료합니다.

 

 

4. Apache에 SSL 인증서 발급 및 자동 설정

Apache를 사용 중이라면 다음 명령어로 자동 설정할 수 있습니다.

sudo certbot --apache -d example.com -d www.example.com

 

 

5. 인증서 갱신 테스트 및 자동 갱신 설정

Let's Encrypt 인증서는 유효 기간이 90일이므로, 갱신 설정이 매우 중요합니다.

✔ 수동으로 갱신 테스트

sudo certbot renew --dry-run

정상적으로 테스트가 완료되면 certbot은 cron 또는 systemd 타이머로 자동 갱신을 수행합니다.

 

6. 인증서 경로 확인 (참고)

발급된 인증서는 보통 아래 경로에 저장됩니다:

/etc/letsencrypt/live/example.com/fullchain.pem
/etc/letsencrypt/live/example.com/privkey.pem

필요할 경우 직접 웹 서버 설정에 경로를 지정해 수동으로 적용할 수도 있습니다.