웹 서비스의 보안은 오늘날 매우 중요한 이슈입니다. 특히 개인 정보 보호와 데이터 유출 방지를 위해 SSL(Secure Sockets Layer) 인증서를 설정하는 것은 필수적입니다. 이 블로그에서는 Nginx 웹 서버를 사용하여 SSL을 설정하는 방법을 상세히 설명하겠습니다. 이 튜토리얼을 통해 안전한 웹 서비스를 만드는 방법을 알아보세요.
사전 준비
- 서버 환경: Ubuntu 또는 CentOS와 같은 리눅스 배포판을 사용하는 서버가 필요합니다.
- Nginx 설치: Nginx가 설치되어 있어야 합니다. 설치가 되어 있지 않다면, 다음 명령어를 통해 쉽게 설치할 수 있습니다.
- 도메인 이름: SSL을 설정할 도메인 이름이 필요합니다. 예를 들어,
example.com이라고 가정하겠습니다. - Certbot 설치: SSL 인증서를 발급받기 위해 Certbot을 설치합니다. Certbot은 Let's Encrypt의 SSL 인증서를 자동으로 관리해주는 도구입니다.
# Ubuntu
sudo apt update
sudo apt install nginx
# CentOS
sudo yum install epel-release
sudo yum install nginx
# Ubuntu
sudo apt install certbot python3-certbot-nginx
# CentOS
sudo yum install certbot python2-certbot-nginx
SSL 인증서 발급
이제 Certbot을 사용하여 SSL 인증서를 발급받겠습니다. 아래 명령어를 입력하여 인증서를 요청합니다.
sudo certbot --nginx -d example.com -d www.example.com
위 명령어에서 -d 옵션은 SSL 인증서를 발급받을 도메인을 지정합니다. 이 명령어를 실행하면 Certbot이 Nginx 설정을 자동으로 감지하고 SSL 인증서를 발급받아 설정해 줍니다. 만약 자동 설정이 실패하면, 수동으로 설정할 수도 있습니다.
Nginx 설정 파일 수정
자동으로 설정이 되지 않았거나, 추가적인 설정을 원하신다면 Nginx 설정 파일을 수정해야 합니다. 기본적으로 인증서와 개인 키는 /etc/letsencrypt/live/example.com/ 경로에 저장됩니다.
Nginx 설정 파일을 열어보세요.
sudo nano /etc/nginx/sites-available/example.com
아래와 같이 SSL 설정을 추가합니다.
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri; # HTTP를 HTTPS로 리디렉션
}
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://localhost:3000; # 애플리케이션 서버와의 연결
proxy_set_header Host $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;
}
}
위 설정에서 proxy_pass는 Nginx가 요청을 전달할 애플리케이션 서버의 주소를 지정합니다. 이 예제에서는 로컬에서 3000번 포트로 실행중인 애플리케이션으로 요청을 전달합니다.
설정 확인 및 재시작
설정을 완료한 후, 오류가 없는지 확인하고 Nginx를 재시작합니다.
sudo nginx -t # 설정 파일 확인
sudo systemctl restart nginx # Nginx 재시작
이제 SSL 인증서가 적용된 안전한 웹 서비스를 사용할 수 있습니다. 웹 브라우저에서 https://example.com 또는 https://www.example.com으로 접속하여 SSL이 제대로 설정되었는지 확인하세요.
SSL 인증서 자동 갱신 설정
Let's Encrypt의 SSL 인증서는 90일마다 만료됩니다. 이를 자동으로 갱신하기 위해, 다음 명령어를 사용하여 크론 작업을 추가할 수 있습니다.
sudo crontab -e
아래의 줄을 추가하여 매일 자정에 Certbot이 갱신을 시도하도록 설정합니다.
0 0 * /usr/bin/certbot renew --quiet
마무리
이번 블로그에서는 Nginx 웹 서버에 SSL 인증서를 설정하는 방법을 살펴보았습니다. SSL을 설정함으로써 사용자 데이터의 안전성을 확보하고, 웹 서비스의 신뢰도를 높일 수 있습니다. 이렇게 간단한 절차로 안전한 웹 서비스를 만들 수 있으니, 여러분의 웹 서비스에도 반드시 SSL을 적용하시길 바랍니다. 추가적인 질문이나 문제가 있다면 언제든지 댓글로 남겨주세요!