Chắc ai cũng đã nghe qua về HTTPs (HTTP secure), SSL và TLS, nhưng có bao giờ bạn thắc mắc tụi này khác nhau như thế nào chưa? Và liệu có phải 3 thuật ngữ đó đều chỉ một thứ hay không?

SSL (Secure Sockets Layer), đây là tên được đặt bởi những người phát minh ra giao thức này phiên bản đầu tiên, công ty Netscape (công ty này sau đó đã được AOL mua lại). Giao thức SSL có 3 phiên bản lần lượt là SSLv1, SSLv2, SSLv3.

Cho ai chưa biết, thì Netscape là một trong những trình duyệt đầu tiên trên thế giới, có trước cả IE, có thể coi là cụ của các trình duyệt.

Netscape

TLS (Transport Layer Security) thực ra chính là SSL, nhưng giao thức này được đổi tên để tránh các vấn đề về pháp lý với Netscape, và đưa giao thức này thành một giao thức chuẩn, mở và miễn phí (được mô tả trong RFC). Tên giao thức cũng ẩn chứa ý tưởng là giao thức này có thể hoạt động trên bất kỳ luồng byte 2 chiều nào chứ không chỉ trên các kết nối dựa trên Internet.

TLS có 3 phiên bản là TLS 1.0 (thực chất là SSLv3.1), TLS 1.1 và TLS 1.2.

HTTPs với chữ s là giao thức SSL/TLS, có mỗi thế thôi.

Vậy, cuối cùng tại sao phải biết mấy cái này làm gì? :trollface:

but-why-meme

Nếu bạn có cấu hình SSL trên webserver như nginx, bạn sẽ thấy một đoạn kiểu như thế này:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

Điều này nghĩa là webserver của bạn sẽ chỉ hỗ trợ các phiên bản TLS như trên, còn các phiên bản khác (SSL) sẽ không được hỗ trợ. Tại sao lại như vậy? Nếu bạn biết POODLE, một vulnerability trên SSLv3 được khám phá bởi Google thì bạn sẽ biết rằng SSLv2 và SSLv3 không còn an toàn nữa, đó là lí do bạn chỉ nên hỗ trợ TLS các version mới. Đó là tất cả kiến thức bạn cần biết.