Có thể xác thực chữ ký chỉ có chứng chỉ tổ tiên hoặc chứng chỉ gốc trong cấu trúc phân cấp không?Xác nhận chữ ký không có chứng chỉ trung gian
Tuyên bố từ chối trách nhiệm: Tôi là người mới tham gia xử lý chứng chỉ vì vậy hãy tha thứ cho thuật ngữ ngây thơ.
Cân nhắc tình huống sau.
- Chúng tôi có hai bên (chúng ta hãy gọi chúng IdP cho nhà cung cấp nhận dạng và SP cho nhà cung cấp dịch vụ) và một số cơ quan chứng nhận trung tâm CA mà chắc chắn là đáng tin cậy bởi cả IdP và SP.
- CA có nó chứng chỉ cho riêng CertCA biết đến cả IdP và SP (nhập khẩu vào IdP và keystore SP dưới một số bí danh)
- Out CA phát hành một chứng chỉ cho IdP (CertIdP) và một cho SP (CertSP).
- IdP có CertIdP trong keystore của nó và biết mật khẩu cho nó để IdP có thể đăng tin nhắn với CertIdP
- Tương tự cho SP/CertSP
- Bây giờ chúng ta hãy giả SP mà không biết CertIdP và IdP không biết CertSP. Họ chỉ biết CertCA được sử dụng để ký CertIdP và CertSP. (Theo tôi hiểu, chúng tôi có một hệ thống phân cấp chứng chỉ CertIdP -> CertCA < - CertSP tại đây)
- IdP muốn gửi thư đã ký đến SP. Nó tạo ra một tin nhắn và sau đó sử dụng CertIdP để ký tên.
- SP nhận được thông báo được IDP ký bằng cách sử dụng CertIdP. Như đã lưu ý ở trên, SP không có CertIdP, chỉ có chứng nhận của cha mẹ là CertCA.
Câu hỏi của tôi là: SP có thể xác thực chữ ký của thư được CertIdP xác nhận chỉ có chứng chỉ gốc CertCA?
Backstory, tại sao lại muốn.
Chúng tôi đang triển khai SSO dựa trên SAML với PicketLink. Chúng tôi đang sử dụng số SAML2SignatureValidationHandler của PicketLink để xác thực chữ ký. Để đạt được điều này, nhà cung cấp dịch vụ (SP) cần phải có chứng chỉ của IdP trong kho khóa của nó. Khi xác nhận SAML đã ký được chuyển tới SP, trình xử lý này sử dụng chứng chỉ của IdP để xác thực chữ ký.
Quy trình trên hoạt động tốt nhưng chúng tôi có một số mối quan ngại về tổ chức. Quá trình này giả định rằng SP có chứng chỉ của IdP để xác thực. Trong trường hợp có thay đổi, chứng chỉ của IdP phải được thay thế ở phía SP. Chúng tôi có thể có một số lượng lớn SP (hunreds khi không phải hàng ngàn) vì vậy đây là một nỗ lực khá lớn.
Vì cả CertIdP và CertSP được cấp bởi cùng một cơ quan (CA), chắc chắn được cả IDP và SP tin cậy, chúng tôi có ý tưởng rằng chúng tôi có thể sử dụng chứng chỉ CA để xác thực chữ ký. Nếu điều này làm việc, điều này có thể loại bỏ sự cần thiết phải trao đổi chứng chỉ giữa IdP và SP. Giấy chứng nhận của CA cũng rất "sống lâu" vì vậy nếu chỉ phải được trao đổi một lần trong đời đời (vĩnh cửu, trong trường hợp của chúng tôi là khoảng 10-20 năm).
Tuy nhiên tôi không chắc chắn về mặt kỹ thuật có thể xác thực chữ ký được ký với CertIdP chỉ có chứng chỉ gốc của CertCA hay không. Có thể không? Hay chúng ta đang theo dõi sai hoàn toàn ở đây?
Nếu có liên quan, chúng tôi đang ở trên nền tảng Java/JBoss ở phía SP, IdP là phần mềm của bên thứ ba.
Cập nhật:
Đây là chữ ký tôi nhận được vào lúc này từ IdP:
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<ds:Reference URI="#_...">
<ds:Transforms>
<ds:Transform
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"
PrefixList="ds saml samlp" />
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<ds:DigestValue>r...=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>X...==</ds:SignatureValue>
</ds:Signature>
Hiện tại tôi chỉ nhận được SignedInfo và SignedValue (vui lòng xem cập nhật trong câu hỏi). Nhưng những gì bạn đang nói là nếu tôi có X509Data với chứng chỉ thì tôi có thể xác nhận nó bằng chứng chỉ CA, đúng không? – lexicore
Tôi vừa mới biết rằng phần tử '' là tùy chọn trong lược đồ xmldsig cũng như trong tiêu chuẩn cốt lõi SAML 2.0. Có, bạn chỉ cần có để có được giấy chứng nhận ký kết, cho dù thông qua '' hoặc thông qua các phương tiện khác phụ thuộc vào trường hợp sử dụng. Cách tiếp cận với cơ chế cấp phép tập trung cũng hoạt động với thông tin khóa công khai, ví dụ: thông qua một URL nổi tiếng cung cấp chứng chỉ xác thực hiện tại. –
@lexicore bạn sẽ luôn cần chứng chỉ được sử dụng để làm chữ ký để xác minh. Việc xác minh không thể được thực hiện chỉ với chứng chỉ CA vì bạn không biết chữ ký đã được thực hiện bằng chứng chỉ do CA này hay bất kỳ CA nào khác đưa ra. Nếu bạn có thể, hãy đặt IdP của bạn để đặt chứng chỉ IdP ký vào SAML trong phần tử ''. –
pepo