it-swarm-vi.com

Sự khác biệt giữa "chứng chỉ ứng dụng khách" X.509 và chứng chỉ SSL thông thường là gì?

Tôi đang thiết lập một dịch vụ web thông qua đó công ty của tôi sẽ nói chuyện với một số dịch vụ của khách hàng doanh nghiệp. Chúng tôi sẽ trao đổi thông tin bằng SOAP. Tôi muốn xử lý xác thực bằng chứng chỉ SSL do cả hai bên cung cấp, nhưng tôi hơi lạc lõng về việc liệu có sự khác biệt cơ bản giữa các loại chứng chỉ hay không.

Khi mọi người nói về HTTPS, họ nói về việc lấy chứng chỉ SSL từ Verisign hoặc cơ quan khác. Khi họ nói về xác thực phía khách hàng, họ nói về việc lấy chứng chỉ X.509. Có phải hai từ này cho cùng một thứ, một từ có thể biến thành từ kia hay là một sự khác biệt nào khác mà tôi không nắm bắt được?

97
Brandon Yarbrough

Chứng chỉ X509 là một loại khóa công khai trong cặp khóa chung/riêng. Các cặp khóa này có thể được sử dụng cho những thứ khác nhau, như mã hóa qua SSL hoặc để nhận dạng. Chứng chỉ SSL là một loại chứng chỉ X509. SSL hoạt động bằng cách mã hóa lưu lượng truy cập cũng như xác minh bên (Verisign tin tưởng trang web này là người mà họ nói, do đó bạn có thể cũng vậy). Verisign hoạt động như một tổ chức chứng nhận (CA). CA được tin tưởng ở chỗ mọi thứ mà nó nói nên được coi là sự thật (Chạy CA đòi hỏi phải cân nhắc bảo mật lớn). Do đó, nếu CA cung cấp cho bạn một chứng chỉ nói rằng họ tin tưởng rằng bạn thực sự là bạn, bạn có chứng chỉ người dùng/chứng chỉ ứng dụng khách.

Một số loại chứng chỉ này có thể được sử dụng trên bảng, nhưng những loại khác chỉ có thể được sử dụng cho một số hoạt động nhất định.

Nếu bạn mở chứng chỉ trong Windows (duyệt qua thứ gì đó qua SSL trong IE và xem thuộc tính chứng chỉ) hoặc chạy certmgr.msc và xem chứng chỉ, hãy xem tab Chi tiết> Sử dụng khóa. Điều đó sẽ chỉ ra những gì chứng chỉ được phép làm/được sử dụng cho.

Đối với SOAP, chứng chỉ có thể được sử dụng cho hai thứ: nhận dạng và mã hóa. Vâng, ba nếu bạn bao gồm chữ ký tin nhắn (băm tin nhắn).

Chứng chỉ ứng dụng khách xác định ứng dụng khách hoặc người dùng đang gọi. Khi ứng dụng thực hiện yêu cầu SOAP, nó sẽ trao chứng chỉ cho dịch vụ web để thông báo cho ai biết yêu cầu đó.

65
Steve

Trong TLS, máy chủ bắt buộc phải có khóa riêng và chứng chỉ (đôi khi được gọi là chứng chỉ máy chủ). Chứng chỉ máy chủ xác định và xác thực máy chủ. Khách hàng có thể tùy chọn có khóa riêng và chứng chỉ riêng (thường được gọi là chứng chỉ ứng dụng khách). Nếu một chứng chỉ ứng dụng khách được sử dụng, nó sẽ xác định và xác thực ứng dụng khách.

Trên web, với HTTPS, thông thường máy chủ có chứng chỉ máy chủ nhưng máy khách không được sử dụng. Điều này có nghĩa là máy khách có thể xác thực máy chủ đang nói chuyện với máy chủ nào, nhưng máy chủ không thể xác thực máy khách nào đang kết nối với máy chủ đó.

Tuy nhiên, trong nhiều bối cảnh lập trình, thông thường bạn sẽ muốn cả hai điểm cuối xác thực lẫn nhau. Do đó, bạn sẽ muốn sử dụng cả certs máy chủ và certs máy khách.

Trong TLS, tất cả các chứng chỉ là chứng chỉ X.509. X.509 chỉ là định dạng của dữ liệu.

Chứng chỉ bao gồm khóa công khai và chữ ký từ cơ quan cấp chứng chỉ (CA). Trên trang web, thông thường các trang web có chứng chỉ máy chủ được Verisign hoặc một số CA nổi tiếng khác cấp. Các trình duyệt web đi kèm với một danh sách gần 100 CA khác nhau, được cài đặt sẵn và các trang web được sử dụng rộng rãi nhất có chứng chỉ máy chủ được cấp bởi một trong những CA đó. Chẳng hạn, Verisign là một trong những CA trong danh sách CA tiêu chuẩn của mọi trình duyệt. Verisign tính tiền cho bạn, nếu bạn muốn họ cấp cho bạn một chứng chỉ.

Cách khác để nhận chứng chỉ của bạn được ký bởi một CA tiêu chuẩn là bạn có thể sử dụng chứng chỉ tự ký: một chứng chỉ được cấp, không phải bởi một trong những CA tiêu chuẩn, mà bởi chính bạn (hoặc bất kỳ ai bạn muốn). Điều này không được sử dụng rộng rãi trên web, bởi vì các máy chủ tự ký khiến các trình duyệt bật lên các hộp thoại cảnh báo cho người dùng, điều mà hầu hết các trang web đều cố gắng tránh. Tuy nhiên, đối với việc sử dụng theo chương trình, các certs tự ký có thể hoạt động tốt. Và nếu bạn sử dụng certs tự ký, bạn không phải trả tiền Verisign. Bạn có thể tìm thấy các hướng dẫn về cách sử dụng các công cụ dòng lệnh của OpenSSL để tạo các certs tự ký của riêng bạn.

SSL là một từ đồng nghĩa với TLS. (Về mặt kỹ thuật, SSL là tên được sử dụng với một số phiên bản cũ hơn của tiêu chuẩn và TLS là tên mới cho một số phiên bản mới hơn của tiêu chuẩn. Tuy nhiên, nhiều người sử dụng hai thuật ngữ thay thế cho nhau.)

Tôi khuyến khích bạn đọc bài viết Wikipedia về chứng chỉ khóa công khai để có nền tảng hữu ích hơn.

36
D.W.

Thông thường, các loại SSL SSL X.509 certs.
[.___.] Tuy nhiên, chúng chỉ có thể được sử dụng để xác thực và mã hóa máy chủ: Một trong những thuộc tính của certs là mục đích được chỉ định và bạn thường không thể sử dụng nó cho mục đích khác.
[.__.] Khác với điều đó, tuy nhiên, chứng chỉ ứng dụng khách khá giống với chứng chỉ máy chủ, chỉ được chỉ định là "Xác thực ứng dụng khách".

Về mặt chức năng, bạn sẽ thường thấy rằng một số hệ thống chọn chỉ chấp nhận một tập hợp con chứng chỉ ứng dụng khách, ví dụ: những người được ban hành bởi CA.

15
AviD

Về mặt chức năng, chúng giống nhau - khóa RSA công khai và xác định thông tin được ký bởi cơ quan có thẩm quyền. Thực tế, các khóa máy chủ của bạn thường được thiết lập với một tên chung xác định tên miền được đề cập (ví dụ: * .wikidia.org). Tôi không tin có bất cứ điều gì hạn chế bạn sử dụng chứng chỉ, bao gồm tự tạo, miễn là nó phù hợp với yêu cầu xác thực của bên kia.

4
Jeff Ferland