Nginx는 높은 성능과 안정성을 제공하는 웹 서버로, SSL 인증서를 통해 데이터 전송의 보안을 강화할 수 있습니다. SSL 인증서를 적용하는 과정은 비교적 간단하지만, 몇 가지 중요한 팁을 알고 있으면 보다 효율적이고 안전하게 작업할 수 있습니다. 이번 포스트에서는 Nginx에 SSL 인증서를 적용할 때 알아두면 좋은 5가지 팁을 소개하겠습니다.

1. SSL 인증서 구입 및 설치

SSL 인증서를 구입할 때는 신뢰할 수 있는 인증 기관(CA)을 선택하는 것이 중요합니다. 무료 SSL 인증서로는 Let's Encrypt가 많이 사용되며, 자동 갱신 기능을 제공하여 관리가 용이합니다. 인증서를 설치하기 전에 Nginx 서버가 작동 중인지 확인하고, 필요한 패키지를 설치해야 합니다.

sudo apt update
sudo apt install nginx

이후, 인증서를 구입한 후 제공받은 cert.pem과 privkey.pem 파일을 Nginx 서버의 적절한 디렉토리에 복사합니다.

2. Nginx 설정 파일 수정

SSL 인증서를 적용하기 위해 Nginx 설정 파일을 수정해야 합니다. 일반적으로 /etc/nginx/sites-available/default 또는 /etc/nginx/conf.d/default.conf 파일을 열어 수정합니다. 아래와 같은 내용을 추가하세요.

server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/privkey.pem;

    location / {
        root /var/www/html;
        index index.html index.htm;
    }
}

여기서 yourdomain.com 부분을 실제 도메인으로 변경해야 하며, ssl_certificate 및 ssl_certificate_key의 경로도 실제 파일 경로로 수정해야 합니다.

3. HTTP에서 HTTPS로 리디렉션

웹사이트의 모든 트래픽을 HTTPS로 안전하게 전환하려면 HTTP에서 HTTPS로 리디렉션을 설정해야 합니다. 이를 위해 아래와 같은 설정을 추가합니다.

server {
    listen 80;
    server_name yourdomain.com;
    return 301 https://$host$request_uri;
}

이 설정은 80번 포트로 들어오는 모든 요청을 HTTPS로 리디렉션합니다.

4. SSL 세부 설정 최적화

SSL 설정을 최적화하면 보안성을 강화할 수 있습니다. 예를 들어, 다음의 SSL 프로토콜 및 암호화 스위트를 설정하여 보안을 강화할 수 있습니다.

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;

이 설정은 최신 프로토콜을 사용하고, 강력한 암호화 스위트를 적용하여 보안을 강화합니다.

5. SSL 인증서 자동 갱신 설정

Let's Encrypt와 같은 무료 SSL 인증서를 사용하는 경우, 인증서가 만료되기 전에 자동으로 갱신되도록 설정하는 것이 중요합니다. Certbot을 사용하면 간단하게 자동 갱신을 설정할 수 있습니다. 다음 명령어를 사용하여 Certbot을 설치합니다.

sudo apt install certbot python3-certbot-nginx

그 후, 다음 명령어를 통해 SSL 인증서를 자동으로 갱신할 수 있습니다.

sudo certbot --nginx -d yourdomain.com

이 명령어는 Nginx 설정을 자동으로 수정하여 인증서를 갱신하고, 필요한 경우 리디렉션을 설정합니다.

자동 갱신을 위해 크론 작업을 설정할 수 있습니다. 아래와 같이 크론탭을 수정해 매일 인증서 갱신을 체크하도록 합니다.

sudo crontab -e

그 후, 다음 라인을 추가합니다.

0 0   * /usr/bin/certbot renew --quiet

이 명령은 매일 자정에 인증서 갱신을 체크합니다.

마무리

Nginx에 SSL 인증서를 적용하는 과정은 여러 단계로 나누어져 있으며, 각 단계에서 주의해야 할 사항들이 존재합니다. 위에서 소개한 5가지 팁을 통해 SSL 인증서 적용 시 발생할 수 있는 문제를 미리 예방하고, 보다 안전하고 효율적으로 웹 서버를 운영할 수 있기를 바랍니다.

SSL 인증서는 웹사이트의 신뢰성을 높이고 사용자 데이터를 보호하는 중요한 요소이므로, 항상 최신 상태로 유지하는 것이 가장 중요합니다.