Pages

Powered by Blogger.

N8N_ENCRYPTION_KEY dùng để làm gì?

 1. N8N_ENCRYPTION_KEY dùng để làm gì?

n8n có nhiều trường dữ liệu nhạy cảm cần được mã hóa:

  • Password trong nodes (SMTP password, DB password, API secrets…)

  • OAuth2 refresh token / access token

  • Credential tokens

  • JSON Webhooks Secret

  • Biến bí mật của workflow

  • Tất cả thông tin đăng nhập trong tab “Credentials”

Tất cả những thứ này được mã hóa và lưu trong database Postgres.

👉 N8N_ENCRYPTION_KEY = chìa khóa để mã hóa/giải mã dữ liệu “Credentials” trong n8n.

Nếu không set key đúng:

  • Credentials không giải mã được → toàn bộ node kết nối sẽ lỗi.

  • Workflow có credential sẽ fail.

  • OAuth tokens không dùng được.


🔥 2. Tại sao phải là chuỗi 64 ký tự hex?

  • n8n dùng AES-256-GCM để mã hóa credentials.

  • AES-256 cần key dài 32 bytes (256 bit).

  • n8n yêu cầu mã hóa key này dưới dạng hex (mỗi byte → 2 ký tự).

  • Do đó:
    32 bytes = 64 ký tự hex

Ví dụ hợp lệ:

f82b34b8f2a1dd33c0e13e5f4ad8129d991cb3dd41f8d2edcc22ad138e32fb9e

⚠️ 3. Điều gì xảy ra nếu đổi key khi hệ thống đang chạy?

Toàn bộ credentials đang lưu → bị vô hiệu hóa (không giải mã được)
❌ Tất cả workflow liên quan đến Credential → lỗi 401/403
❌ OAuth2 refresh token → mất hết

➡ Nếu đổi key = mất sạch Credential.

Vì vậy: KHÔNG BAO GIỜ đổi N8N_ENCRYPTION_KEY khi server đã dùng rồi.
Nó giống như thay khóa két sắt trong khi bên trong đã có đồ — mở lại không được.


📌 4. Ngrok hay Cloudflare Tunnel không liên quan

Tên N8N_ENCRYPTION_KEY=Replace_With_Hex_64_Chars_Key_NGROK chỉ là comment / nhãn đặt tên, chứ:

  • Ngrok không dùng encryption key này

  • Cloudflare không dùng key này

  • Key này thuộc về nội bộ của n8n

Đề xuất đổi thành:

N8N_ENCRYPTION_KEY=Replace_With_Your_64_Char_Hex_Key

🧪 5. Cách tạo key đúng chuẩn (1 lệnh)

Linux / macOS:

openssl rand -hex 32

Output ví dụ:

e91cbbcedc1bbdd77acda211992f7c58fea8ad9b65748c7284d79e238a81f51c

Dán vào .env:

N8N_ENCRYPTION_KEY=e91cbbcedc1bbdd77acda211992f7c58fea8ad9b65748c7284d79e238a81f51c

📁 6. Khi nào cần tạo key mới?

  • Khi cài một n8n instance mới

  • Khi clone instance sang server mới

  • Khi muốn mỗi instance độc lập ( tốt nhất: mỗi instance 1 key )

KHÔNG BAO GIỜ được thay key nếu DB đã chứa credentials.


📘 7. Tóm tắt dễ hiểu

Mục đíchNội dung
Chức năngMã hóa Credential (password, tokens…)
Độ dài64 ký tự hex = 32 bytes AES-256
Tác động khi đổi keyToàn bộ credential không giải mã được → hỏng
Ngrok/CloudflareKhông liên quan
Cách tạoopenssl rand -hex 32


0 comments:

Post a Comment