Bỏ qua điều hướng
← Về danh sách bài viết
Hướng dẫn kỹ thuật

Hướng dẫn cài đặt SSL cho Node.js & Express.js (Kèm Code)

Cách cấu hình node js ssl và node express ssl chi tiết từng bước. Cung cấp sẵn code mẫu copy-paste để tạo server HTTPS chuẩn xác, không bị báo lỗi "Not Secure"

Cài đặt node js ssl là bước quan trọng để bảo vệ dữ liệu người dùng và nâng cao uy tín cho website của bạn trên môi trường internet

Việc bảo mật dữ liệu trên server bằng giao thức HTTPS đang trở thành tiêu chuẩn bắt buộc. Để chạy ứng dụng trên môi trường thực tế mà không bị trình duyệt báo cảnh báo đỏ “Not Secure”, bạn cần cấu hình chứng chỉ bảo mật. Bài viết này, BKNS sẽ hướng dẫn bạn chi tiết cách cài đặt node js ssl thuần và kết hợp thực chiến với framework phổ biến qua từ khóa node express ssl.

Cài đặt node js ssl là bước quan trọng để bảo vệ dữ liệu người dùng và nâng cao uy tín cho website của bạn trên môi trường internet
Cài đặt node js ssl là bước quan trọng để bảo vệ dữ liệu người dùng và nâng cao uy tín cho website của bạn trên môi trường internet

Chuẩn bị trước khi cài đặt SSL cho Node.js

Trước khi bắt tay vào cấu hình code, bạn cần đảm bảo hệ thống đã có sẵn các yếu tố sau:

  • Các file chứng chỉ SSL: Bao gồm file Private Key (thường có đuôi .key), Certificate Bundle (đuôi .crt hoặc .pem) và CA Root. Bạn có thể mua hoặc tạo self-signed để test.
  • Module mặc định của Node.js: Chúng ta bắt buộc phải gọi module https để tạo server và module fs (File System) để cấp quyền đọc các file chứng chỉ nằm trên máy chủ.
Bạn cần chuẩn bị đầy đủ các file chứng chỉ (.key, .crt) trước khi tiến hành viết code cấu hình SSL cho server Node.js
Bạn cần chuẩn bị đầy đủ các file chứng chỉ (.key, .crt) trước khi tiến hành viết code cấu hình SSL cho server Node.js

Hướng dẫn cài đặt SSL trên Node.js (Thuần)

Nếu bạn đang chạy Node.js thuần (không sử dụng framework), quá trình cấu hình SSL khá đơn giản với các bước sau:

Bước 1: Tải chứng chỉ SSL lên máy chủ

Nếu bạn đã đăng ký SSL, hãy truy cập trang quản lý và tải về các file chứng chỉ tương ứng. Sau đó upload chúng lên một thư mục an toàn trên server Node.js của bạn.

Bước 2: Tạo file server và khai báo chứng chỉ

Tạo một file có tên https_server.js (hoặc server.js). Sử dụng fs.readFileSync để đọc đường dẫn tuyệt đối dẫn đến các file chứng chỉ của bạn. Dưới đây là đoạn code chuẩn:

text
var https = require('https');
var fs = require('fs');

// Khai báo đường dẫn đọc file chứng chỉ SSL
var https_options = {
  key: fs.readFileSync("/path/to/private.key"),
  cert: fs.readFileSync("/path/to/your_domain_name.crt"),
  ca: [
          fs.readFileSync('/path/to/CA_root.crt'),
          fs.readFileSync('/path/to/ca_bundle_certificate.crt')
       ]
};

// Khởi tạo HTTPS Server
https.createServer(https_options, function (req, res) {
 res.writeHead(200);
 res.end("Welcome to Node.js HTTPS Server\n");
}).listen(8443, () => {
  console.log('Server is running on port 8443');
});

Ghi chú đường dẫn:

  • path/to/private.key: Đường dẫn trỏ đến file Khóa riêng (Private Key).
  • path/to/your_domain_name.crt: Đường dẫn trỏ đến file chứng chỉ tên miền.
  • path/to/ca_bundle...: Đường dẫn trỏ đến gói CA Bundle do nhà cung cấp cấp phát.

Cấu hình SSL cho Express.js (Node Express SSL)

Trong môi trường thực tế, hầu hết các Developer đều sử dụng Express.js. Việc cấu hình node express ssl có một lưu ý cực kỳ quan trọng: Bạn không thể dùng trực tiếp app.listen() để chạy HTTPS.

Cách bọc ứng dụng Express vào HTTPS server để triển khai node express ssl giúp hệ thống chạy an toàn trên port 443
Cách bọc ứng dụng Express vào HTTPS server để triển khai node express ssl giúp hệ thống chạy an toàn trên port 443

Thay vào đó, bạn phải truyền đối tượng app của Express vào bên trong https.createServer. Hãy xem đoạn code thực hành dưới đây:

text
const express = require('express');
const https = require('https');
const fs = require('fs');

const app = express();

// Khai báo đường dẫn chứng chỉ
const sslOptions = {
  key: fs.readFileSync('/path/to/private.key'),
  cert: fs.readFileSync('/path/to/your_domain_name.crt')
};

// Các route của Express
app.get('/', (req, res) => {
  res.send('HTTPS Express Server đang hoạt động an toàn!');
});

// Bọc app Express bằng module https
https.createServer(sslOptions, app).listen(443, () => {
  console.log('Express App đang chạy HTTPS trên port 443');
});

Bước 3: Khởi động Node.js

Mở Terminal/Console lên và chạy lệnh sau để khởi động ứng dụng bạn vừa viết:

text
node https_server.js

Lúc này, bạn có thể truy cập https://yourdomain.com để kiểm tra biểu tượng ổ khóa bảo mật. Nếu gặp lỗi không đọc được file `.key`, hãy kiểm tra lại quyền truy cập (permission) của thư mục chứa chứng chỉ.

Sử dụng lệnh node để khởi động server HTTPS và kiểm tra kết quả thông báo hoạt động trên cổng bảo mật
Sử dụng lệnh node để khởi động server HTTPS và kiểm tra kết quả thông báo hoạt động trên cổng bảo mật

BKNS – Mua chứng chỉ SSL uy tín, an toàn và nhanh chóng

Trên môi trường Localhost (Dev), bạn có thể tự tạo chứng chỉ miễn phí để test. Nhưng khi đưa hệ thống (Production) ra internet, bạn bắt buộc phải sử dụng chứng chỉ SSL từ các tổ chức cấp phát uy tín để trình duyệt không báo lỗi đỏ, đồng thời bảo vệ dữ liệu khách hàng tuyệt đối.

Hiện nay chỉ với chưa đầy 20$ là bạn đã có thể dễ dàng sở hữu một chứng chỉ SSL đảm bảo an toàn và chất lượng trong 1 năm. Nếu bạn băn khoăn về loại SSL phù hợp cho server Node.js của mình, có thể tham khảo bảng giá Chứng chỉ SSl giá rẻ tại BKNS để nhận được tư vấn kỹ thuật chuyên sâu.

Khi là khách hàng của BKNS, bạn sẽ nhận được những quyền lợi ưu việt như:

  • Chế độ hoàn trả lên tới 30 ngày nếu không hài lòng.
  • Dịch vụ hỗ trợ kỹ thuật xử lý lỗi cấu hình 24/7.
  • Miễn phí hỗ trợ cài đặt thẳng vào máy chủ.
  • Không giới hạn server đăng ký.

Kết luận

Qua bài viết trên, bạn đã nắm được sự khác biệt giữa cấu hình node js ssl thuần và cách tích hợp chứng chỉ vào framework node express ssl. BKNS hy vọng các đoạn code mẫu trên sẽ giúp bạn cấu hình thành công hệ thống bảo mật của mình một cách nhanh chóng.

Theo dõi BKNS thường xuyên hơn tại các nền tảng mạng xã hội để cập nhật thêm nhiều thủ thuật quản trị máy chủ: