우분투에서 무료 SSL 인증서 설치하기 (Let’s Encrypt)

웹사이트를 운영하다 보면 SSL 인증서는 이제 선택이 아닌 필수가 되었습니다. 검색엔진 최적화(SEO)에도 영향을 미치고, 사용자들의 신뢰도 높일 수 있죠. 하지만 상용 SSL 인증서는 비용이 부담스러울 수 있습니다.

다행히 Let’s Encrypt라는 무료 SSL 인증서 서비스가 있어서, 누구나 쉽게 SSL을 적용할 수 있습니다. 오늘은 우분투 서버에서 Let’s Encrypt를 이용해 SSL 인증서를 설치하는 방법을 단계별로 알아보겠습니다.

Let’s Encrypt란?

Let’s Encrypt는 비영리 인증기관으로, 무료로 SSL/TLS 인증서를 발급해주는 서비스입니다. 자동화된 프로세스로 인증서 발급과 갱신이 가능하며, 주요 브라우저에서 모두 신뢰하는 인증서를 제공합니다.

주요 특징:

  • 완전 무료
  • 자동 갱신 지원
  • 90일 유효기간 (자동 갱신 권장)
  • 도메인 검증(DV) 인증서 제공

사전 준비사항

SSL 인증서를 설치하기 전에 다음 사항들을 확인해주세요.

1. 도메인 설정 확인

# 도메인이 서버 IP를 올바르게 가리키는지 확인
nslookup your-domain.com

2. 시스템 업데이트

sudo apt update
sudo apt upgrade -y

3. 방화벽 설정 확인

# 포트 80(HTTP), 443(HTTPS)이 열려있는지 확인
sudo ufw status
sudo ufw allow 80
sudo ufw allow 443

1단계: Certbot 설치하기

Certbot은 Let’s Encrypt 인증서를 관리하는 공식 클라이언트입니다. 설치 방법은 두 가지가 있는데, Snap 방식을 권장합니다.

Snap을 이용한 설치 (권장)

# Snap이 설치되어 있는지 확인 (우분투 18.04 이상은 기본 설치)
sudo apt install snapd

# Certbot 설치
sudo snap install --classic certbot

# 시스템 PATH에 certbot 명령어 추가
sudo ln -s /snap/bin/certbot /usr/bin/certbot

APT를 이용한 설치 (대안)

sudo apt install certbot python3-certbot-apache python3-certbot-nginx

설치가 완료되었는지 확인해보세요:

certbot --version

2단계: 웹서버별 SSL 인증서 설치

사용하고 있는 웹서버에 따라 방법이 조금씩 다릅니다.

Apache 웹서버 사용 시

Apache를 사용한다면 가장 간단한 방법입니다:

# Apache가 실행 중인지 확인
sudo systemctl status apache2

# SSL 인증서 자동 설치 및 설정
sudo certbot --apache

명령어를 실행하면 대화형 메뉴가 나타납니다:

  1. 이메일 주소 입력 (갱신 알림용)
  2. 이용약관 동의
  3. 도메인 선택 (자동으로 감지된 도메인 목록에서 선택)
  4. HTTP to HTTPS 리다이렉트 설정 여부 선택

특정 도메인을 직접 지정하고 싶다면:

sudo certbot --apache -d your-domain.com -d www.your-domain.com

Nginx 웹서버 사용 시

Nginx 사용자도 마찬가지로 간단합니다:

# Nginx가 실행 중인지 확인
sudo systemctl status nginx

# SSL 인증서 자동 설치 및 설정
sudo certbot --nginx

특정 도메인 지정:

sudo certbot --nginx -d your-domain.com -d www.your-domain.com

독립 실행형 (Standalone) 방식

웹서버 설정을 직접 관리하고 싶거나, 다른 웹서버를 사용하는 경우:

# 웹서버를 일시 정지
sudo systemctl stop apache2  # 또는 nginx

# 인증서만 발급
sudo certbot certonly --standalone -d your-domain.com

# 웹서버 재시작
sudo systemctl start apache2  # 또는 nginx

Webroot 방식

웹서버를 중단하지 않고 인증서를 발급받을 수 있습니다:

sudo certbot certonly --webroot -w /var/www/html -d your-domain.com

3단계: 자동 갱신 설정하기

Let’s Encrypt 인증서는 90일마다 갱신해야 합니다. 하지만 걱정하지 마세요! 자동 갱신을 설정하면 됩니다.

갱신 테스트

# 갱신이 제대로 작동하는지 테스트 (실제로 갱신하지는 않음)
sudo certbot renew --dry-run

크론탭으로 자동 갱신 설정

# 크론탭 편집
sudo crontab -e

# 다음 줄을 추가 (매일 오전 2시에 갱신 체크)
0 2 * * * /usr/bin/certbot renew --quiet

Systemd 타이머 사용 (대안)

최신 우분투에서는 systemd 타이머를 사용할 수도 있습니다:

# 타이머 상태 확인
sudo systemctl status snap.certbot.renew.timer

# 타이머 활성화 (보통 자동으로 활성화됨)
sudo systemctl enable snap.certbot.renew.timer

4단계: 설치 확인 및 테스트

인증서 정보 확인

# 설치된 인증서 목록 확인
sudo certbot certificates

웹사이트 접속 테스트

브라우저에서 https://your-domain.com으로 접속하여 자물쇠 아이콘이 표시되는지 확인해보세요.

SSL Labs 테스트

더 정확한 SSL 설정 상태를 확인하려면 SSL Labs에서 테스트해보세요.

유용한 관리 명령어들

인증서 수동 갱신

# 모든 인증서 갱신
sudo certbot renew

# 특정 인증서만 갱신
sudo certbot renew --cert-name your-domain.com

# 강제 갱신 (만료 30일 전이 아니어도 갱신)
sudo certbot renew --force-renewal

인증서 삭제

sudo certbot delete --cert-name your-domain.com

인증서 상세 정보 확인

openssl x509 -in /etc/letsencrypt/live/your-domain.com/fullchain.pem -text -noout

문제 해결 가이드

자주 발생하는 문제들

1. 도메인 검증 실패

# DNS 설정 확인
dig your-domain.com
nslookup your-domain.com

# 웹서버 접근 테스트
curl -I http://your-domain.com

2. 포트 접근 문제

# 포트 사용 상황 확인
sudo netstat -tlnp | grep :80
sudo netstat -tlnp | grep :443

# 방화벽 재확인
sudo ufw status verbose

3. 웹서버 설정 충돌

  • Apache: sudo apache2ctl configtest
  • Nginx: sudo nginx -t

4. 인증서 경로 문제 Let’s Encrypt 인증서는 다음 경로에 저장됩니다:

  • 인증서: /etc/letsencrypt/live/your-domain.com/fullchain.pem
  • 개인키: /etc/letsencrypt/live/your-domain.com/privkey.pem

보안 강화 팁

HSTS 설정 추가

더 높은 보안을 위해 HSTS(HTTP Strict Transport Security) 헤더를 추가하세요.

Apache:

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"

Nginx:

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

약한 SSL 프로토콜 비활성화

SSL Labs에서 A+ 등급을 받기 위해서는 추가 보안 설정이 필요할 수 있습니다.

마무리

Let’s Encrypt를 이용하면 정말 쉽게 무료 SSL 인증서를 설치할 수 있습니다. 한 번 설정해두면 자동으로 갱신되기 때문에 관리 부담도 거의 없죠.

핵심 포인트 요약:

  • Certbot 설치 후 --apache 또는 --nginx 옵션 사용
  • 자동 갱신 설정으로 관리 부담 최소화
  • 정기적인 테스트로 SSL 상태 확인

SSL 적용으로 웹사이트의 보안과 신뢰도를 높이시기 바랍니다! 혹시 설치 과정에서 문제가 발생하시면 위의 문제 해결 가이드를 참고해보세요.


이 가이드가 도움이 되셨다면 공유해주세요! SSL 인증서 설치에 대한 궁금한 점이나 추가 정보가 필요하시면 댓글로 남겨주세요.

공유하기

Leave a Reply

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