TLS 1.3 có hai ưu điểm chính so với các phiên bản trước là nâng cao bảo mật và cải thiện tốc độ. Bạn có thể dễ dàng cài đặt TLS 1.3 cho Nginx với OpenSSL.

TLS 1.3

TLS 1.3 là một phiên bản mới của giao thức TLS, vậy TLS là gì? TLS (viết tắt của Transport Layer Security, có nghĩa là Bảo mật tầng truyền tải), cùng với SSL (viết tắt của Secure Sockets Layer, có nghĩa là Tầng ổ bảo mật) dẫn trước, là các giao thức mật mã nhằm mục đích bảo mật sự vận chuyển trên Internet. Xem thêm về Transport Layer Security trên Wikipedia.

Sau gần 10 năm, một khoảng thời gian khá dài cho phiên bản TLS 1.2, bây giờ chúng ta đã có thể sử dụng phiên bản TLS 1.3. Kể từ ngày 21 tháng 3 năm 2018, TLS 1.3 là một Dự thảo Internet được đề xuất cho Tiêu chuẩn Internet. Nó dựa trên đặc tính TLS 1.2 trước đó, xem thêm về TLS 1.3.

Hiện tại, nhiều trang web bao gồm Gmail, Facebook và các trang web sử dụng CDN của Cloudflare đã hỗ trợ TLS 1.3. Site của tui cũng đang sử dụng giao thức mới nhất này.

TLS 1.3

Từ hình ảnh trên (cung cấp bởi Cloudflare), chúng ta có thể nhận thấy TLS 1.3 đã giảm bớt một lượt yêu cầu từ Client đến Server và một lượt trả lời từ Server đến Client. Điều này giúp cải thiện tốc độ tải trang đáng kể.

TLS 1.3 như mong muốn của nó, sẽ nâng cao bảo mật hơn và khắc phục các vấn đề của các phiên bản trước đó. Hiện tại, bản dự thảo mới nhất là draft-28.

Nginx và OpenSSL

Cũng giống như việc bật HTTP/2 cho Nginx, nó yêu cầu Nginx 1.9.5 và OpenSSL 1.0.2. Để hỗ trợ TLS 1.3 cho trang web, bạn cần phải cài đặt một máy chủ web và các thư viện SSL hỗ trợ giao thức mới nhất này. Nginx đã hỗ trợ TLS 1.3 từ phiên bản 1.13 và OpenSSL hỗ trợ giao thức này trong phiên bản 1.1.1. BoringSSL cũng đã hỗ trợ giao thức này.

Bạn cần phải nâng cấp Nginx và OpenSSL nếu bạn đang sử dụng phiên bản không được hỗ trợ. Các hệ điều hành như CentOS, Ubuntu cũ thường không cập nhật các gói hoặc cập nhật rất chậm. Cách tốt nhất là cài đặt Nginx từ repository và cài đặt OpenSSL từ source để có các phiên bản mới nhất. Vì OpenSSL chưa sử dụng TLS 1.3 cho cài đặt mặc định, bạn cần phải sử dụng tham số enable-tls1_3 cho đến khi giao thức này được cài đặt mặc định. Sử dụng lệnh nginx -vopenssl version để kiểm tra phiên bản.

Nginx có thể sử dụng thư viện của OpenSSL đã được cài đặt trên hệ điều hành hoặc nó có thể tự biên dịch OpenSSL để sử dụng cho riêng nó. Sử dụng tham số --with-openssl để chỉ định thư mục của openssl mà bạn đã tải về.

./configure	\
	.....	\
	--with-openssl=../openssl	\
	--with-openssl-opt=enable-tls1_3	\
	--with-http_ssl_module	\
	--with-http_v2_module

Bật TLS 1.3 cho Nginx

Sau khi đã có Nginx và OpenSSL hỗ trợ TLS 1.3, mở nginx.conf nơi mà bạn đã cấu hình cho domain của bạn.

Thêm TLSv1.3 cho ssl_protocols và TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 cho ssl_ciphers. Đây là 3 cipher suites mới cho giao thức này. Xem thêm về cách cài đặt SSL cho Nginx.

server {
	listen	443 ssl http2;
	
	.............
	
	ssl_protocols	TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
	ssl_ciphers	'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:..............................';
	
	.............
	
}

Thử xem các cấu hình đã đúng chưa.

service nginx configtest

Restart Nginx sau khi mọi thứ đều ổn.

service nginx restart

Kiểm tra phiên bản TLS

Hiện tại đã có một số trình duyệt hỗ trợ TLS 1.3, xem tại Can I use, trong tương lai giao thức này chắc chắn sẽ được hỗ trợ phổ biến hơn. Chrome 68.0.3440.4 chỉ hỗ trợ draft-23, Firefox và OpenSSL phiên bản mới nhất đã hỗ trợ draft-28. Nếu bạn sử dụng phiên bản cao hơn phiên bản mà trình duyệt hỗ trợ, trình duyệt sẽ kết nối qua TLS 1.2.

Firefox

Trên Firefox, việc kiểm tra phiên bản TLS cũng giống như việc kiểm trả chứng chỉ SSL.

  1. Nhấn vào biểu tượng ổ khóa màu xanh ở trước địa chỉ tên miền và chọn nút Show connection details.
    Kết nối an toàn trên Firefox
  2. Nhấn nút More Information để mở Page Info. Bây giờ bạn có thể kiểm tra thông tin SSL và phiên bản TLS trong mục Securiry.
    Kiểm tra chứng chỉ SSL trên Firefox

Google Chrome

  1. Bấm F12 để mở Chrome DevTools.
  2. Chuyển sang mục Security để kiểm tra phiên bản TLS.
    Kiểm tra chứng chỉ SSL trên Google Chrome

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

Tham gia cuộc thảo luận

1 Bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

  1. Server của mình đang dùng Nginx 1.17.0 và OpenSSL (1.1.1c) và đã cấu hình domain.conf đầy đủ… nhưng kiểm tra vẫn không hỗ trợ TLSv1.3 vậy AD ?
    Mình dùng ssl_ciphers của AD nhưng Nginx báo lỗi:
    nginx (via systemctl): Job for nginx.service failed because the control process exited with error code. See “systemctl status nginx.service” and “journalctl -xe” for details.

    Thế là như thế nào hả AD ?