
들어가며
웹사이트를 운영하다 보면 HTTPS 적용은 이제 선택이 아닌 필수가 되었습니다. 검색엔진 최적화(SEO)는 물론, 브라우저에서 "주의 요함" 경고가 뜨는 것도 방지할 수 있죠.
이번 포스팅에서는 Nginx 서버에 Let's Encrypt 무료 SSL 인증서를 적용하는 방법을 단계별로 정리해보겠습니다.
환경
- Ubuntu Server
- Nginx
- 도메인이 서버 IP에 연결되어 있어야 함
기존 Nginx 설정 (HTTP)
HTTPS 적용 전, 제 nginx 설정은 다음과 같았습니다.
server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/ubuntu/cheonsu_front;
index index.html index.htm index.nginx-debian.html;
server_name itland.site;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
80번 포트(HTTP)로만 서비스하고 있는 상태입니다.
Step 1. Certbot 설치
Let's Encrypt 인증서를 쉽게 발급받고 관리할 수 있는 Certbot을 설치합니다.
sudo apt update
sudo apt install certbot python3-certbot-nginx
Step 2. SSL 인증서 발급
Certbot의 nginx 플러그인을 사용하면 인증서 발급과 nginx 설정 수정을 한 번에 처리할 수 있습니다.
sudo certbot --nginx -d itland.site
이메일 입력, 약관 동의 등 몇 가지 질문에 답하면 자동으로 인증서가 발급되고 nginx 설정까지 수정됩니다.
Step 3. 변경된 Nginx 설정 확인
Certbot이 자동으로 수정한 설정은 대략 다음과 같은 구조입니다.
# HTTP → HTTPS 리다이렉트
server {
listen 80;
listen [::]:80;
server_name itland.site;
return 301 https://$host$request_uri;
}
# HTTPS 서버 블록
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name itland.site;
# SSL 인증서 경로
ssl_certificate /etc/letsencrypt/live/itland.site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/itland.site/privkey.pem;
# SSL 보안 설정
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
root /home/ubuntu/itland;
index index.html index.htm;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
주요 변경 사항:
- 80번 포트 접속 시 443(HTTPS)으로 자동 리다이렉트
- 443번 포트에서 SSL 인증서를 사용하여 암호화 통신
- TLS 1.2, 1.3 프로토콜 사용으로 보안 강화
Step 4. 설정 적용
nginx 설정 문법을 검사하고 재시작합니다.
# 문법 검사
sudo nginx -t
# nginx 재시작
sudo systemctl reload nginx
Step 5. 자동 갱신 설정 확인
Let's Encrypt 인증서는 90일마다 갱신이 필요합니다. 하지만 걱정할 필요 없습니다. Certbot이 자동으로 갱신 스케줄을 등록해주기 때문이죠.
자동 갱신이 제대로 동작하는지 테스트해봅니다.
sudo certbot renew --dry-run
다음과 같은 메시지가 나오면 성공입니다.
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/skywaterhani.com/fullchain.pem (success)
자동 갱신 타이머가 등록되어 있는지 확인하려면:
sudo systemctl status certbot.timer
유용한 명령어 모음
# 현재 인증서 정보 및 만료일 확인
sudo certbot certificates
# 인증서 수동 갱신
sudo certbot renew
# nginx 설정 파일 위치
/etc/nginx/sites-available/default
마치며
Let's Encrypt와 Certbot 덕분에 무료로, 그리고 아주 간단하게 HTTPS를 적용할 수 있었습니다.
요약하면:
- certbot 설치
- sudo certbot --nginx -d 도메인 실행
- 끝!
자동 갱신까지 알아서 해주니 한 번 설정해두면 신경 쓸 일이 거의 없습니다.
HTTPS 적용을 미루고 계셨다면, 이번 기회에 바로 적용해보세요! 🔒
'여러가지 > Ubuntu & Linux' 카테고리의 다른 글
| Ubuntu 파일 권한 완벽 가이드 (chmod 사용법) (0) | 2026.01.10 |
|---|---|
| Nginx 404 Not Found (Permission Denied) 오류 해결 방법 (0) | 2025.01.16 |
| [Ubuntu & Linux] CPU 정보 확인하는 방법 !! (0) | 2024.09.25 |
| [Ubuntu & Linux] 타임존 한국시간으로 변경하는 방법 !! (0) | 2024.08.30 |
| [Ubuntu & Linux] cuda 및 nvidia 설치제거 방법 !! (패키지 삭제) (0) | 2024.08.13 |
댓글