Đây là sự hiểu biết của tôi về SSL, tôi không phải là một chuyên gia trong chủ đề này, nhưng trong trường hợp không có câu trả lời khác hy vọng tôi ít nhất có thể cung cấp cho bạn một số điều cần suy nghĩ.
Khi bạn tạo chứng chỉ tự ký cho máy chủ, bạn cần thêm chứng chỉ này vào máy khách bằng cách nào đó, nó sẽ không được cài đặt ngay khi máy khách kết nối, nếu không, bất kỳ máy chủ nào cũng chỉ có thể tin cậy bằng cách gửi chứng chỉ tự ký với bất kỳ thứ gì cố kết nối với nó. Trong ứng dụng của tôi chứng chỉ máy chủ được nạp vào truststore của máy khách khi nó được khởi động bằng cách chỉ định javax.net.ssl.truststore ("path/to/server/cert");
Bây giờ, khi khách hàng kết nối với máy chủ, việc bắt tay diễn ra. Tại thời điểm này, máy chủ sẽ gửi chứng chỉ của nó tới máy khách và máy khách sẽ xác nhận rằng nó có trên thực tế đến từ máy chủ bằng cách kiểm tra nó với truststore của nó (vào thời điểm này không quan trọng nếu nó được tự ký hay không, vì khách hàng nên kiểm tra chứng chỉ gốc cũng như bất kỳ chứng chỉ nào bạn đã thêm). Nếu chứng chỉ được gửi bởi máy chủ, kiểm tra thông tin liên lạc vẫn tiếp tục và dữ liệu được chia sẻ.
Có một số hình thức xử lý phiên diễn ra cho phép giao tiếp diễn ra mà không phải trao đổi chứng chỉ mỗi lần. Nhưng tôi tin rằng điều này bị giới hạn ở một kết nối duy nhất, vì vậy ngay sau khi bạn đóng kết nối và tạo một kết nối mới, quy trình phải được lặp lại, tức là máy chủ phải gửi chứng chỉ để xác thực lại.
Tóm lại: chứng chỉ máy chủ tự ký phải được cài đặt trên máy khách với giao tiếp SSL (giống như cách chứng chỉ CA gốc được cài đặt trong sản phẩm ngay từ đầu). Mọi kết nối SSL được thực hiện giữa máy khách và máy chủ sẽ yêu cầu máy chủ gửi chứng chỉ của nó tới máy khách để nó có thể kiểm tra nó đối với truststore của nó. Có thể máy chủ sẽ cho phép các phiên được tiếp tục, trong trường hợp đó chứng chỉ sẽ không được gửi lại (nhưng tôi không chắc chắn trong điều kiện nào một phiên có thể được tiếp tục lại, có thể được cấu hình trên các máy chủ khác nhau) .
Hy vọng điều này ít nhất sẽ mang lại cho bạn điều gì đó để suy nghĩ.
Tôi đã viết trình mô phỏng https bằng java. Tôi đã có thể mô phỏng 12000 - 15000 yêu cầu trong 15 giây bằng cách sử dụng chứng chỉ tự ký. Nhưng phải mất 3 phút sử dụng chứng chỉ CA? Tôi thực sự không hiểu tại sao điều này xảy ra. Có sự khác biệt nào trong việc xử lý chứng chỉ CA đã ký so với CA không? – JKV