Tôi có câu hỏi về HTTPS. Một trong những tiền bối của tôi đã nói với tôi rằng HTTPS không thực sự sử dụng SSL/TLS mà chỉ sử dụng các thuật toán mã hóa của họ. Ông nói rằng quá trình bắt tay cho chứng chỉ được thực hiện ở lớp vận chuyển, nhưng việc mã hóa khóa bảo mật của tải trọng thực tế được thực hiện ở lớp ứng dụng. Và ông cũng nói rằng HTTPS thực sự có thể được coi là một giao thức lớp trình bày.
Anh ấy có đúng không?
HTTPS trong RFC 2818 Được chỉ định trong: "HTTP qua TLS".
Mặc dù thông số kỹ thuật là về TLS (vì đây là thông số kỹ thuật của IETF và IETF chỉ sử dụng "TLS"), nhưng thực tế nó là về SSL hoặc TLS, tùy thuộc vào phiên bản SSL/TLS được sử dụng (xem sự khác biệt giữa SSL và TLS).
Có, HTTPS sử dụng SSL/TLS. Như RFC nói:
Về mặt khái niệm, HTTP/TLS rất đơn giản. Chỉ cần sử dụng HTTP qua TLS chính xác như bạn sử dụng HTTP qua TCP.
Về cơ bản, các khóa mã hóa được đàm phán trong quá trình bắt tay SSL/TLS và trao đổi HTTP không biết về các khóa này.
Nếu bạn không tin, hãy sử dụng Wireshark để xem một số lưu lượng truy cập trên trình duyệt. Tất cả những gì bạn sẽ thấy là một số lưu lượng SSL/TLS (HTTP trao đổi được mã hóa bởi nó).
Nếu bạn muốn phân tích một số lưu lượng truy cập, bạn có thể thiết lập máy chủ của riêng mình và sử dụng khóa riêng của nó để xem các trao đổi HTTP thông thường qua SSL/TLS bằng Wireshark, ví dụ: SSL của Wireshark được mô tả trong Trang. (Bạn cần phải tắt bộ mật mã EDH vì chúng cung cấp khả năng bảo mật hoàn hảo về phía trước, ngăn bạn giải mã lưu lượng truy cập bị đánh hơi ngay cả khi bạn có khóa riêng của máy chủ.) Trang này cũng có một số dữ liệu HTTPS mẫu mà bạn có thể tải xuống và sử dụng với Wireshark View mà không cần phải cài đặt máy chủ của riêng bạn.
Từ góc độ trình duyệt, bạn cũng có thể xem lưu lượng truy cập được báo cáo bởi các công cụ dành cho nhà phát triển (Firebug, v.v.) khi sử dụng HTTPS, bạn sẽ chỉ thấy lưu lượng HTTP bình thường do lớp SSL/TLS được thư viện SSL/TLS bên dưới xử lý .
Nói chung, tôi sẽ không nhấn mạnh quá nhiều vào lớp OSI. Chúng trông có vẻ ổn trong các lớp mạng lý thuyết, nhưng trong thực tế rất khó áp dụng cho ngăn xếp TCP/IP (xem so sánh Và "phân lớp được coi là có hại" ), đặc biệt là khi bạn đặt SSL/TLS vào đó, lớp này được thiết kế chính xác để trở thành một lớp vô hình đối với lớp ứng dụng (SSL/TLS thường nằm trên TCP, giống như bất kỳ ứng dụng nào khác trên TCP. như giao thức ứng dụng, nhưng nó nằm bên dưới bất kỳ giao thức ứng dụng nào mà nó bảo vệ).
Tôi là một lập trình viên xuất sắc, rất giỏi!