본문 바로가기
카테고리 없음

9강: n8n에서 인증서 설정하기: HTTPS 구성

by bloghi 2025. 2. 18.

n8n에서 인증서 설정하기: HTTPS 구성

n8n을 셀프호스팅할 때 보안은 중요한 요소입니다. 특히, HTTPS를 통해 안전한 연결을 설정하면, 데이터 전송 중 발생할 수 있는 중간자 공격을 방지할 수 있습니다. 이 강에서는 n8n에서 HTTPS를 구성하고 인증서를 설정하는 방법에 대해 자세히 다루겠습니다.

HTTPS란?

HTTPS(HyperText Transfer Protocol Secure)는 웹에서 데이터를 암호화하여 안전하게 전송하는 프로토콜입니다. HTTP는 기본적으로 데이터를 암호화하지 않지만, HTTPS는 SSL/TLS 프로토콜을 사용하여 클라이언트와 서버 간의 통신을 암호화합니다. HTTPS를 사용하면 웹 사이트와 사용자 간의 개인정보와 민감한 데이터가 안전하게 보호됩니다.

HTTPS를 사용해야 하는 이유

웹 애플리케이션에서 HTTPS를 사용하면 여러 가지 이점이 있습니다:

  • 데이터 보안: 데이터를 암호화하여 중간자 공격(Man-in-the-Middle Attack)을 방지할 수 있습니다.
  • SEO 최적화: 구글은 HTTPS를 사용하는 사이트에 더 높은 랭킹을 부여합니다.
  • 브라우저 신뢰도: HTTPS를 사용하면 브라우저에서 '안전한 사이트'로 표시되어 사용자 신뢰를 얻을 수 있습니다.

n8n에서 HTTPS 설정하기

n8n에서 HTTPS를 설정하려면 SSL/TLS 인증서를 사용해야 합니다. 인증서는 무료로 제공되는 Let's Encrypt를 사용하거나, 상용 인증서를 구입하여 사용할 수 있습니다. 이번 강에서는 Let's Encrypt를 사용하여 n8n을 HTTPS로 설정하는 방법을 설명합니다.

1. SSL 인증서 발급 받기

Let's Encrypt는 무료 SSL 인증서를 제공하는 서비스로, n8n을 셀프호스팅하는 데 적합한 옵션입니다. Let's Encrypt에서 SSL 인증서를 발급 받으려면 Certbot이라는 도구를 사용합니다. Certbot은 SSL 인증서 발급 및 갱신을 자동화하는 도구입니다. 먼저, Certbot을 설치하고 인증서를 발급 받는 방법을 알아보겠습니다.

Certbot 설치하기

우분투 시스템에서 Certbot을 설치하려면 아래 명령어를 사용합니다:

sudo apt update
sudo apt install certbot python3-certbot-nginx

설치가 완료되면, Certbot을 사용하여 Let's Encrypt에서 SSL 인증서를 발급받을 수 있습니다.

SSL 인증서 발급 받기

Certbot을 사용하여 n8n 서버의 도메인에 대해 SSL 인증서를 발급받으려면, 아래 명령어를 실행합니다:

sudo certbot certonly --standalone -d yourdomain.com

위 명령어에서 yourdomain.com을 실제 도메인으로 바꾸어야 합니다. 인증서가 발급되면, SSL 인증서 파일이 /etc/letsencrypt/live/yourdomain.com/ 디렉토리에 저장됩니다.

2. n8n에서 HTTPS 사용하기

SSL 인증서를 발급받은 후, n8n에서 이를 적용하여 HTTPS를 사용하려면 인증서 파일을 n8n 서버로 설정해주어야 합니다. n8n의 설정 파일을 수정하여 인증서 경로를 지정하면 됩니다.

n8n에서 인증서 경로 설정

n8n을 Docker에서 실행 중이라면, 아래와 같은 환경 변수로 인증서 경로를 설정할 수 있습니다:

docker run -d --name n8n -p 443:443 -p 80:80 \
  -e N8N_PROTOCOL=https \
  -e N8N_SSL_CERT_PATH=/etc/letsencrypt/live/yourdomain.com/fullchain.pem \
  -e N8N_SSL_KEY_PATH=/etc/letsencrypt/live/yourdomain.com/privkey.pem \
  n8nio/n8n

위 명령어에서 N8N_SSL_CERT_PATHN8N_SSL_KEY_PATH 환경 변수를 설정하여 SSL 인증서 경로를 지정합니다. 인증서 경로는 Certbot에서 발급받은 경로로 설정해야 합니다. Docker를 사용하지 않는 경우, n8n의 설정 파일에서 동일한 환경 변수를 설정할 수 있습니다.

nginx와 함께 HTTPS 사용

n8n을 reverse proxy로 설정하고, nginx를 사용하여 HTTPS를 처리할 수도 있습니다. 아래는 nginx 설정 파일 예시입니다:

server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

    location / {
        proxy_pass http://localhost:5678;
        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;
    }
}

nginx에서 SSL 인증서를 설정하고, 443 포트에서 HTTPS 요청을 처리하여 n8n으로 전달합니다. 또한, proxy_pass를 사용하여 n8n의 웹 UI로 요청을 전달합니다.

3. HTTPS 인증서 자동 갱신

Let's Encrypt의 SSL 인증서는 90일마다 갱신해야 합니다. Certbot은 자동 갱신 기능을 제공하므로 이를 설정하여 인증서 갱신을 자동화할 수 있습니다.

Certbot 자동 갱신 설정

Certbot은 자동으로 인증서를 갱신하려면 cron을 사용하여 주기적으로 갱신 명령어를 실행합니다. 다음 명령어를 사용하여 자동 갱신을 설정할 수 있습니다:

sudo crontab -e

크론탭 파일에서 아래와 같은 항목을 추가합니다:

0 12 * * * certbot renew --quiet && systemctl reload nginx

이 명령은 매일 12시에 인증서를 갱신하고, nginx 서비스를 재시작하여 새로운 인증서를 반영하도록 합니다.

결론

이번 강에서는 n8n에서 HTTPS를 설정하는 방법에 대해 설명했습니다. HTTPS를 통해 n8n의 보안을 강화하고, 사용자와의 안전한 통신을 보장할 수 있습니다. Let's Encrypt를 사용하면 무료로 SSL 인증서를 발급받을 수 있으며, Certbot을 통해 인증서 갱신을 자동화할 수 있습니다. n8n을 Docker와 nginx를 활용하여 HTTPS를 설정하고, 보안을 강화하는 방법을 배웠습니다. 이를 통해 보다 안정적이고 안전한 n8n 셀프호스팅 환경을 구축할 수 있습니다.