Cài đặt SSL trên Nginx - Install SSL on Nginx

Trong thế giới ngày nay, an toàn trực tuyến trở thành một quan tâm hàng đầu cho những người quản trị trang web. Việc cài đặt chứng chỉ SSL không chỉ tăng cường tính bảo mật mà còn tạo ra một môi trường truy cập an toàn cho người dùng. Trong hướng dẫn này, chúng ta sẽ đề cập đến cách install SSL trên Nginx và thiết lập chuyển hướng tự động từ giao thức HTTP đến HTTPS, đảm bảo rằng mọi người dùng trải nghiệm trang web của bạn với sự an toàn tuyệt đối.

Tải lên các chứng chỉ lên máy chủ nơi trang web của bạn được lưu trữ

Sau khi hoàn thành việc tạo mã CSR và kích hoạt SSL, bạn sẽ nhận được một tệp nén chứa Chứng chỉ Sectigo (trước đây được biết đến là Comodo) qua email. Hoặc bạn có thể tải chúng từ tài khoản KDATA của bạn.

Lưu ý: Nếu bạn chọn máy chủ NGINX khi kích hoạt chứng chỉ, bạn sẽ nhận được một tệp nén chứa một tệp Chứng chỉ, có phần mở rộng '.crt', và một tệp Bundle Cơ quan Chứng chỉ (CA), có phần mở rộng '.ca-bundle'.

Tải lên cả hai tệp lên máy chủ của bạn bằng cách bạn ưa thích. Chẳng hạn, bạn có thể sử dụng một ứng dụng FTP.

Bạn cũng có thể tải về tệp Bundle cho từng Chứng chỉ.

Xem thêm: Chứng chỉ SSL có bao nhiêu loại

Kết hợp tất cả các chứng chỉ thành một tệp duy nhất

Bạn cần phải kết hợp tất cả các Chứng chỉ (your_domain.crtyour_domain.ca-bundle) vào một tệp '.crt' duy nhất.

Chứng chỉ cho tên miền của bạn nên đặt đầu tiên trong tệp, theo sau là chuỗi Chứng chỉ (Bundle CA).

Di chuyển vào thư mục nơi bạn đã tải lên các tệp chứng chỉ. Chạy lệnh sau để kết hợp các tệp:

$ cat your_domain.crt your_domain.ca-bundle >> your_domain_chain.crt

Vui lòng lưu ý rằng nếu các tệp chứng chỉ đã được tải về từ tài khoản KDATA của bạn, lệnh tốt nhất để sử dụng sẽ là:

$ cat your_domain.crt > your_domain_chain.crt ; echo >> your_domain_chain.crt ; cat your_domain.ca-bundle >> your_domain_chain.crt

Hoặc bạn có thể kết hợp các tệp bằng cách sử dụng công cụ trực tuyến này và làm theo các bước dưới đây:

  • Mở tệp your_domain.crt trong trình soạn thảo văn bản và sao chép mã chứng chỉ, bao gồm các thẻ '-----BEGIN CERTIFICATE-----' và '-----END CERTIFICATE-----'.
  • Điều hướng đến trang decoder.link và mở tab SSL&CSR Decoder.
  • Dán mã văn bản your_domain.crt vào trường cần thiết và nhấn Decode.

install ssl nginx ssl & csr decoder

  • Sau đó, cuộn xuống kết quả và tìm phần Bundle (Nginx) trong phần Thông tin Tổng quan.
  • Nhấp vào biểu tượng đĩa mềm ở bên phải để tải xuống tệp được tạo ra.

ssl nginx general information

  • Tệp 'nginx_bundle.zip' sẽ được tải về máy tính của bạn. Giải nén nó và sử dụng tệp nginx_bundle_l3s4k9n1l0s3.crt (phần 'l3s4k9n1l0s3' trong tên là một chuỗi ngẫu nhiên) để cài đặt.

Tạo một khối máy chủ Nginx riêng biệt hoặc chỉnh sửa tệp cấu hình hiện tại

Để cài đặt chứng chỉ SSL trên Nginx, bạn cần chỉ cho máy chủ biết sử dụng tệp nào, bằng cách a) tạo một tệp cấu hình mới hoặc b) chỉnh sửa tệp hiện có.

a) Bằng cách thêm một tệp cấu hình mới cho trang web, bạn có thể đảm bảo rằng không có vấn đề nào với tệp cấu hình riêng biệt. Hơn nữa, điều này sẽ dễ dàng hơn để xử lý sự cố trong quá trình cài đặt nếu có bất kỳ vấn đề gì với cấu hình mới này

Chúng tôi đề xuất tạo một tệp cấu hình mới trong thư mục này:

/etc/nginx/conf.d

Điều đó có thể được thực hiện bằng lệnh này:

sudo nano /etc/nginx/conf.d/Your_domain*-ssl.conf

Trong đó Your_domain*-ssl.conf là tên của tệp mới đã được tạo.

Tiếp theo, sao chép và dán một trong các khối máy chủ sau đây cho cổng 443 và chỉnh sửa các thư mục. Đảm bảo rằng tên máy chủ và đường dẫn đến thư mục web phù hợp trong cả hai khối máy chủ cho cổng 80 và cổng 443. Nếu bạn có bất kỳ giá trị quan trọng nào khác cần phải lưu, hãy di chuyển chúng vào khối máy chủ mới được tạo.

 

b) Chỉnh sửa tệp cấu hình mặc định của máy chủ web, có tên nginx.conf. Nó nên nằm trong một trong các thư mục này:

/usr/local/nginx/conf
/etc/nginx
/usr/local/etc/nginx

Bạn cũng có thể sử dụng lệnh này để tìm nó:

sudo find / -type f -iname "nginx.conf"

Sau khi tìm thấy nó, mở tệp với:

sudo nano nginx.conf

Sau đó sao chép và dán một trong các khối máy chủ cho cổng 443 được đưa ra dưới đây và chỉnh sửa các thư mục theo khối máy chủ của bạn cho cổng 80 (với tên máy chủ phù hợp, đường dẫn đến thư mục web, và bất kỳ giá trị quan trọng nào bạn cần). Hoặc bạn có thể sao chép khối máy chủ cho cổng 80, sau đó dán nó bên dưới, cập nhật cổng và thêm các chỉ thị liên quan đến SSL cần thiết.

Chọn khối máy chủ

Dưới đây, bạn có thể tìm thấy một khối máy chủ cho phiên bản Nginx của bạn.

Lưu ý: Để kiểm tra phiên bản Nginx của bạn, chạy lệnh này:

sudo nginx -v

check nginx version

Lưu ý: Thay thế các giá trị tên tệp, chẳng hạn như your_domain_chain.crt, trong khối máy chủ bằng thông tin của bạn và chỉnh sửa các đường dẫn sử dụng/path/to/.

  • Khối máy chủ cho phiên bản Nginx dưới 1.14:
server {

listen 443;

ssl on;

ssl_certificate /path/to/certificate/your_domain_chain.crt;

ssl_certificate_key /path/to/your_private.key;

root /path/to/webroot;

server_name your_domain.com;

}

Lưu ý: Bạn có thể chỉ định nhiều tên máy chủ trong cấu hình như vậy, nếu cần thiết, ví dụ:

server {

listen 443;

ssl on;

ssl_certificate /path/to/certificate/your_domain_chain.crt;

ssl_certificate_key /path/to/your_private.key;

root /path/to/webroot;

server_name your_domain.com www.your_domain.com;

}
  • Khối máy chủ cho phiên bản Nginx từ 1.15 trở lên:
server {

listen 443 ssl;

ssl_certificate /path/to/certificate/your_domain_chain.crt;

ssl_certificate_key /path/to/your_private.key;

root /path/to/webroot;

server_name your_domain.com;

}
  • ssl_certificate nên trỏ đến tệp chứng chỉ kết hợp bạn đã tạo trước đó.
  • ssl_certificate_key nên trỏ đến Khóa Riêng tư đã được tạo với mã CSR. 

Quan trọng: Đối với Chứng chỉ Multi-Domain hoặc Wildcard, bạn cần phải thêm một khối máy chủ riêng biệt cho mỗi tên miền/phụ tên miền được bao gồm trong Chứng chỉ. Đảm bảo bạn chỉ định tên miền/phụ tên miền cụ thể cùng với đường dẫn đến các tệp Chứng chỉ tương tự trong khối máy chủ, như đã mô tả ở trên.

Sau khi khối máy chủ tương ứng được thêm vào tệp, đảm bảo bạn lưu lại các chỉnh sửa. Sau đó, bạn có thể kiểm tra lại các thay đổi đã thực hiện bằng các bước sau.

Chạy lệnh này để kiểm tra cú pháp tệp cấu hình có ok không:

sudo nginx -t

config syntax ssl nginx

Nếu bạn nhận được lỗi, hãy kiểm tra lại xem bạn đã tuân theo hướng dẫn đúng cách hay chưa. Đừng ngần ngại liên hệ với Đội Hỗ trợ của chúng tôi nếu bạn có bất kỳ câu hỏi nào.

Dưới đây là mẹo: để tìm nhật ký lỗi cho mục tiêu xử lý sự cố, chỉ cần chạy:

sudo nginx -T | grep 'error_log'

Trong trường hợp không có tệp nào được đề cập, các tệp đã được chú thích hoặc nếu không có tệp nhật ký lỗi được chỉ định, bạn nên kiểm tra tệp nhật ký hệ thống mặc định:

tail /var/log/nginx/error.log -n 20

Nếu máy chủ hiển thị kiểm tra thành công, khởi động lại Nginx bằng lệnh này để áp dụng các thay đổi:

sudo nginx -s reload

Bây giờ, Chứng chỉ SSL của bạn đã được cài đặt. B

Lưu ý quan trọng:

Đôi khi, sau khi cài đặt tệp SSL được kết hợp bằng dòng lệnh, bạn có thể nhận được thông báo lỗi 'Nginx/Apache error: 0906D066:PEM routines:PEM_read_bio:bad end line', trong trường hợp này, bạn có thể tìm thông tin chi tiết trong hướng dẫn tham khảo.

Vấn đề phổ biến khác tại giai đoạn này là thông báo lỗi 'Nginx SSL: error:0B080074:x509 certificate routines: X509_check_private_key:key values mismatch', bạn có thể tìm hiểu thêm chi tiết về nó và các cách khắc phục có thể có trong bài viết này. 

Cấu hình chuyển hướng từ HTTP sang HTTPS

Chúng tôi đề xuất bạn cài đặt chuyển hướng từ HTTP sang HTTPS. Điều này đảm bảo rằng khách truy cập trang web của bạn chỉ có thể truy cập phiên bản an toàn của trang web của bạn.

Để làm điều này, bạn cần thêm một dòng vào tệp cấu hình có khối máy chủ cho cổng 80.

Tips:

  • Trước tiên, bạn cần xác định tệp cấu hình đang được kích hoạt bằng một trong các lệnh sau đây:
sudo nginx -T | grep -iw "configuration file"

sudo nginx -T | grep -iw "include"
  • Các đường dẫn mặc định đến tệp cấu hình là:

Trên hệ điều hành dựa trên RHEL: /etc/nginx/conf.d/default.conf

Trên hệ điều hành dựa trên Debian: /etc/nginx/sites-enabled/default

  • Bạn có thể mở các tệp để kiểm tra xem tệp nào chứa khối máy chủ cần thiết. Để làm điều này, chạy:
sudo nano name_of_the_file

Khi bạn tìm thấy tệp chứa khối máy chủ cho cổng 80 (cổng HTTP mặc định), thêm dòng sau vào tệp đó:

return 301 https://$server_name$request_uri;

Lưu ý:  Quy tắc chuyển hướng ở trên nên được nhập ở cuối khối máy chủ.

  • return là chỉ thị chính cần sử dụng.
  • 301 là chuyển hướng vĩnh viễn (302 là chuyển hướng tạm thời).
  • https là loại lược đồ cụ thể (rõ ràng thay vì biến $scheme).
  • Biến $server_name sẽ sử dụng tên miền được chỉ định trong chỉ thị server_name.
  • Biến $request_uri được sử dụng để khớp các đường dẫn đến các trang/phần của trang web được yêu cầu (mọi thứ sau tên miền).

Dưới đây là ví dụ về khối máy chủ có chuyển hướng HTTPS:

Chuyển hướng vĩnh viễn sang HTTPS:

server {

listen 80;

server_name your_domain.com www.your_domain.com;

return 301 https://$server_name$request_uri;

}

Chuyển hướng vĩnh viễn sang HTTPS không có tiền tố "www":

server {

listen 80;

server_name your_domain.com www.your_domain.com;

return 301 https://your_domain.com$request_uri;

}

Chuyển hướng vĩnh viễn sang HTTPS với tiền tố "www":

server {

listen 80;

server_name your_domain.com www.your_domain.com;

return 301 https://www.your_domain.com$request_uri;

}

Chuyển hướng tạm thời sang HTTPS không có tiền tố "www":

server {

listen 80;

server_name your_domain.com www.your_domain.com;

return 302 https://your_domain.com$request_uri;

}

Với việc hoàn thành quy trình install SSL trên Nginx và chuyển hướng HTTPS, trang web của bạn không chỉ được bảo vệ chặt chẽ mà còn tối ưu hóa trải nghiệm người dùng. Bằng cách này, bạn không chỉ thể hiện tâm huyết với an ninh mạng mà còn đáp ứng đúng đắn nhu cầu ngày càng cao của người dùng internet. Đừng ngần ngại bước tiếp và tận hưởng sự an tâm khi biết rằng trang web của bạn đang hoạt động trên một nền tảng an toàn và bảo mật.

Đến với Chứng chỉ SSL của KDATA. Với chúng tôi, an ninh mạng không còn là nỗi lo. Bảo vệ thông tin trực tuyến của bạn bằng cách mua Chứng chỉ SSL tại KDATA, giúp giảm thiểu rủi ro và tăng cường sự an toàn cho website của bạn. Hãy đầu tư vào sự an toàn ngay hôm nay với KDATA!

https://kdata.vn/ssl-certificate

👉 Liên hệ ngay KDATA hỗ trợ tận tình, support tối đa, giúp bạn trải nghiệm dịch vụ giá hời chất lượng tốt nhất