웹사이트를 운영하다 보면 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
명령어를 실행하면 대화형 메뉴가 나타납니다:
- 이메일 주소 입력 (갱신 알림용)
- 이용약관 동의
- 도메인 선택 (자동으로 감지된 도메인 목록에서 선택)
- 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 인증서 설치에 대한 궁금한 점이나 추가 정보가 필요하시면 댓글로 남겨주세요.