Hướng dẫn cài đặt chứng chỉ SSL trên Nginx

Lường Thế Nam 20 phút đọc

Để thực hiện cài đặt SSL có phí cho website sử dụng webserver là nginx các bạn có thể thực hiện các thao tác sau:

  • Bước 1: Giải nén tập tin đính kèm trong email mà nhà cung cấp SSL gửi cho ban sau khi chứng thư số được cấp (hoặc lưu nội dung Certificate và CA trong email vào các file có tên tương ứng như: www_matbao_support_cert.pem, Chain_RootCA_Bundle.crt) , sẽ nhận được tập tin matbao_support_cert.pem và Chain_RootCA_Bundle.crt

Lưu ý: File Crt cũng chính là file đuôi .pem, chỉ cần lấy 1 file Chain_RootCA_Bundle.crt.

Mẹo: Truy cập trang quản lý SSL, chọn Tải SSL -> phiên bản Nginx để nhận tập tin phù hợp với Nginx
  • Bước 2: Tải tập tin này lên máy chủ: lưu vào trong thư mục lưu private key của bạn (ví du: /usr/local/ssl/certificate)
  • Bước 3: Đăng nhập vào SSH bằng tài khoản root và truy cập đến thư mục vừa tải certificate lên.
  • Bước 4: Lúc này trong thư mục /usr/local/ssl/certificate sẽ có 3 tập tin: www_matbao_support.key, www_matbao_support_cert.pem, Chain_RootCA_Bundle.crt

Chuyển đổi thành tập tin dùng cho Nginx, dùng lệnh:

cat www_matbao_support_cert.pem Chain_RootCA_Bundle.crt > matbao.support.crt

(bỏ qua bước này nếu bạn tải phiên bản dành cho Nginx từ website hoặc quý khách dùng SSL của nhà cung cấp khác COMODO)

  • Bước 5: Tạo hoặc sửa file cấu hình VHosts của nginx (thường là /etc/nginx/sites-enabled/domain.conf) và tìm đoạn cấu hình sau (Ví dụ ở đây file conf mà mình tạo là /etc/nginx/sites-enabled/matbao.support.conf:
server {
listen 80;
server_name matbao.support www.matbao.support; # tên miền của chứng chỉ SSL đang cài đặt
return 301 https://$host$request_uri; # Chuyển hướng 301 từ http sang https
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name matbao.support www.matbao.support; # tên miền của chứng chỉ SSL đang cài đặt
root /path/to/public; # đường dẫn tới document root của website
ssl_certificate /usr/local/ssl/certificate/matbao.support.crt; # đường dẫn tới file crt tạo ở bước 4
ssl_certificate_key /usr/local/ssl/certificate/www_matbao_support.key; # đường dẫn tới file private key ở bước 4
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
}

Lưu ý: Nếu trước đó bạn đã tạo một file config của tên miền này trên máy chủ, hãy xóa nội dung trong tập tin hoặc xóa tập tin đó để tránh bị đè cấu hình.

  • Bước 6: Kiểm tra cấu trúc file config mà bạn vừa cấu hình

Bạn gõ lệnh sau để kiểm tra lại tập tin config mà bạn vừa lưu:

nginx -t

Nếu kết quả trả về như sau có nghĩa là file cấu hình đã thành công và chính xác:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Sau đó, bạn có thể thực hiện restart lại nginx và mở port bằng các lệnh sau:

sudo systemctl restart nginx
hoặc
sudo service nginx restart

Trường hợp restart thành công nhưng truy cập chưa được, bạn vui lòng gõ lệnh sau để mở port 443 trên máy chủ Ubuntu:

ufw allow 443

Nếu bạn cài đặt trên máy chủ local, vui lòng kiểm tra cấu hình NAT port trên modem / router để quá trình hoàn tất.

Chúc các bạn thành công!!!