2011-07-05 35 views
6

Vì vậy, tôi đã đấu tranh với WS-Security một thời gian, từ từ tiến bộ. Trước tiên hãy để tôi mô tả ngắn gọn về thiết lập của tôi. Tôi có ứng dụng Java đang chạy trong một tomcat, cung cấp một điểm cuối dịch vụ web (sử dụng Spring). Tôi muốn các tin nhắn gửi đến được ký. Tôi đang thử nghiệm với SoapUI. Vì vậy, sau một cuộc đấu tranh lâu dài, tôi đã nhận được các máy chủ như xa như kiểm tra tin nhắn đến cho một chữ ký và tôi cũng đã SoapUI, để ký gửi thư. Tuy nhiên, máy chủ vẫn từ chối chứng chỉ và tôi không chắc chắn mình đang làm gì sai, tức là tôi gửi thông tin chứng chỉ sai với các yêu cầu thử nghiệm của mình hoặc tôi đã không duy trì chính xác chứng chỉ trong truststore. Sau đây là một ví dụ về một yêu cầu:Cách nhận chứng chỉ WS-Security được chấp nhận bởi ứng dụng Java

<soapenv:Envelope xmlns="http://movilitas.com/movilizer/v7" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header> 
     <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
     <wsu:Timestamp wsu:Id="Timestamp-7" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
      <wsu:Created>2011-06-30T12:51:33.407Z</wsu:Created> 
      <wsu:Expires>2011-06-30T12:53:13.407Z</wsu:Expires> 
     </wsu:Timestamp> 
     <ds:Signature Id="Signature-6" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
      <ds:SignedInfo> 
       <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> 
       <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> 
       <ds:Reference URI="#id-2"> 
        <ds:Transforms> 
        <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
        </ds:Transforms> 
        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 
        <ds:DigestValue>OiRQ2oXbajnnrSGsbOALT2i6brs=</ds:DigestValue> 
       </ds:Reference> 
      </ds:SignedInfo> 
      <ds:SignatureValue> 
       fmtFMSccFcwEfL1M8qgQ... 
      </ds:SignatureValue> 
      <ds:KeyInfo Id="KeyId-C3B38A939F7D63D51F13094382933988"> 
       <wsse:SecurityTokenReference wsu:Id="STRId-C3B38A939F7D63D51F13094382933989" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
        <wsse:KeyIdentifier EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" 
             ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3SubjectKeyIdentifier"> 
         MIICbzCCAdgCAQEwDQ... 
        </wsse:KeyIdentifier> 
       </wsse:SecurityTokenReference> 
      </ds:KeyInfo> 
     </ds:Signature> 
     </wsse:Security> 
    </soapenv:Header> 
    <soapenv:Body wsu:Id="id-2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
     [...] 
    </soapenv:Body> 
</soapenv:Envelope> 

Bây giờ nội dung tôi có trong là giống như một tôi nhận được, khi tôi export chứng chỉ từ truststore của tôi (các base64 phiên bản của giấy chứng nhận mã hóa). Lỗi tôi nhận được khi tôi gửi yêu cầu như sau:

Jul 5, 2011 4:42:23 PM com.sun.xml.wss.impl.dsig.KeySelectorImpl resolve 
SEVERE: WSS1353: Error occurred while resolving key information 
com.sun.xml.wss.XWSSecurityException: No Matching public key for MIICbzCCAdgCAQEwDQ... subject key identifier found 
    at com.sun.xml.wss.impl.misc.DefaultSecurityEnvironmentImpl.getCertificate(DefaultSecurityEnvironmentImpl.java:617) 
    at com.sun.xml.wss.impl.dsig.KeySelectorImpl.resolve(KeySelectorImpl.java:385) 
    at com.sun.xml.wss.impl.dsig.KeySelectorImpl.select(KeySelectorImpl.java:232) 
    ... 

Tôi có thiếu gì đó không? Một cái gì đó lớn? Hay nhỏ? Đây có phải là những gì tôi thực sự phải gửi như KeyIdentifier? Chúng tôi rất trân trọng bất kỳ sự giúp đỡ nào!

Trả lời

7

Bạn không tự gửi theo chứng chỉ, chỉ tham chiếu đến chứng chỉ - Mã định danh khóa chủ đề. Bạn phải lưu trữ chứng chỉ công cộng của đối tác trong cửa hàng ủy thác (kho khóa) hoặc bạn phải bao gồm mã thông báo bảo mật nhị phân bên trong thư của mình. Xem phần http://www.oasis-open.org/committees/download.php/16785/wss-v1.1-spec-os-x509TokenProfile.pdf 3.3.2 để biết chi tiết.

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