2010-04-23 28 views
5

Tôi có một nghi ngờ rất cơ bản trong SSL HandShake. Giả sử rằng chúng ta có một máy chủ S sử dụng chứng chỉ tự ký. Tôi viết một máy khách Java C kết nối với S. Khi C kết nối với S, C lấy các chứng chỉ từ S và lưu chúng vào kho ủy thác của nó và phần còn lại của số tiền thu được thông tin liên lạc. Sau một thời gian tôi sử dụng cùng một C để kết nối với S, do đó S sẽ gửi các chứng chỉ trở lại C, hoặc C sẽ sử dụng các chứng chỉ đã được lưu trữ trong truststore. Tôi không giỏi về SSL và triển khai cơ bản chức năng Truststore trong Java.SSL HandShake trên Máy khách Java

S sẽ gửi chứng chỉ đến C không thay đổi được liệu C có chứng chỉ trên truststore không? Tôi tin rằng nếu tôi có chứng chỉ trong truststore C tin tưởng S và C sẽ không yêu cầu giấy chứng nhận khi tôi kết nối lại ?? Giả định của tôi có đúng không ??

Quy trình này có giống với chứng chỉ tự ký và chứng chỉ CA không ??

Xin cảm ơn trước.

+1

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

Trả lời

6

Đâ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ĩ.

+0

Điều đó khá tốt.Khả năng nối lại không liên kết với các kết nối; nó thường chỉ đơn giản là một vấn đề của phiên có một đời nhất định, thường là năm phút, trong đó các kết nối SSL mới giữa các đồng nghiệp SSL giống nhau có thể tái sử dụng bí mật chính được tạo ra ngay từ đầu. –

+0

Tôi đã viết một trình mô phỏng https trong 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

+1

Tôi không nghĩ rằng có bất kỳ sự khác biệt trong cách họ được xử lý, nhưng có thể có sự khác biệt trong các chứng chỉ mình. Có lẽ kích thước khóa được sử dụng trong chứng chỉ tự ký là ngắn hơn chứng chỉ CA? Chứng chỉ CA có thể có một chuỗi chứng chỉ dài, do đó, để xác minh chứng chỉ ứng dụng khách, nó phải xem qua danh sách các chứng chỉ tin cậy dài hơn. Có nhiều cách để xem xét những điều này bằng cách sử dụng openssl tôi nghĩ. – DaveJohnston

Các vấn đề liên quan