2017-03-23 4 views
0

Wir betreiben einen WSO2 ESB 5.0-Server. Wir möchten einen Service erstellen, der eine normale SOAP-Nachricht in eine signierte Version umwandelt und diese an einen Endpunkt liefert.Rampart: Senden einer Soap-Nachrichten Failes mit privaten/Schlüssel-Zertifikat

Wir sind die Nachricht bekommen:

Verursacht durch: org.apache.ws.security.WSSecurityException: Allgemeines Sicherheitsfehler

(keine Zertifikate für Benutzer wso2carbon wurden für Signatur gefunden)

Warum bekomme ich diese Nachricht? Ich verstehe die Bedeutung davon nicht.

Update: Ich habe herausgefunden, dass der Benutzer in der Wallkonfiguration der Alias ​​des Schlüssels sein soll, den Sie verwenden möchten, um zu signieren. Und die Passwort-Handler das Passwort der Alias ​​zurückgeben sollten Schlüssel

Die Synapse (WSO2 esb) -Dienst ist:

<?xml version="1.0" encoding="UTF-8"?> 
    <proxy xmlns="http://ws.apache.org/ns/synapse" 
      name="__mke_siging_out" 
      startOnLoad="true" 
      statistics="disable" 
      trace="disable" 
      transports="https"> 
     <target> 
      <inSequence> 
      <send> 
       <endpoint> 
        <address uri="http://foo.bar.host/services/default/Echo/echo_client_ep"> 
         <enableSec policy="gov:/policies/__mke_sign_out.xml"/> 
        </address> 
       </endpoint> 
      </send> 
      </inSequence> 
      <outSequence> 
      <header xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
        action="remove" 
        name="wsse:Security" 
        scope="default"/> 
      <send/> 
      </outSequence> 
      <faultSequence/> 
     </target> 
     <description/> 
    </proxy> 

Die Wall-Konfiguration und zeigt auf einen JKS Schlüsselspeicher, in der privaten/pub Zertifikat geladen und durch ein Passwort geschützt:

<?xml version="1.0" encoding="UTF-8"?> 
<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SigOnly"> 
    <wsp:ExactlyOne> 
     <wsp:All> 
      <sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
       <wsp:Policy> 
        <sp:InitiatorToken> 
         <wsp:Policy> 
          <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"> 
           <wsp:Policy> 
            <sp:RequireThumbprintReference /> 
            <sp:WssX509V3Token10 /> 
           </wsp:Policy> 
          </sp:X509Token> 
         </wsp:Policy> 
        </sp:InitiatorToken> 
        <sp:RecipientToken> 
         <wsp:Policy> 
          <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never"> 
           <wsp:Policy> 
            <sp:RequireThumbprintReference /> 
            <sp:WssX509V3Token10 /> 
           </wsp:Policy> 
          </sp:X509Token> 
         </wsp:Policy> 
        </sp:RecipientToken> 
        <sp:AlgorithmSuite> 
         <wsp:Policy> 
          <sp:Basic256 /> 
         </wsp:Policy> 
        </sp:AlgorithmSuite> 
        <sp:Layout> 
         <wsp:Policy> 
          <sp:Strict /> 
         </wsp:Policy> 
        </sp:Layout> 
        <sp:IncludeTimestamp /> 
        <sp:OnlySignEntireHeadersAndBody /> 
       </wsp:Policy> 
      </sp:AsymmetricBinding> 
      <sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
       <sp:Policy> 
        <sp:MustSupportRefKeyIdentifier /> 
        <sp:MustSupportRefIssuerSerial /> 
       </sp:Policy> 
      </sp:Wss10> 
      <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
       <sp:Body /> 
      </sp:SignedParts> 
     </wsp:All> 
    </wsp:ExactlyOne> 
    <rampart:RampartConfig xmlns:rampart="http://ws.apache.org/rampart/policy"> 
     <rampart:user>wso2carbon</rampart:user> 
     <rampart:passwordCallbackClass>nl.rsg.it.igw.passwordcallback.Handler</rampart:passwordCallbackClass> 
     <rampart:encryptionUser>useReqSigCert</rampart:encryptionUser> 
     <rampart:timestampPrecisionInMilliseconds>true</rampart:timestampPrecisionInMilliseconds> 
     <rampart:timestampTTL>300</rampart:timestampTTL> 
     <rampart:timestampMaxSkew>300</rampart:timestampMaxSkew> 
     <rampart:timestampStrict>false</rampart:timestampStrict> 
     <rampart:tokenStoreClass>org.wso2.carbon.security.util.SecurityTokenStore</rampart:tokenStoreClass> 
     <rampart:nonceLifeTime>300</rampart:nonceLifeTime> 
     <rampart:encryptionCrypto> 
      <rampart:crypto provider="org.wso2.carbon.security.util.ServerCrypto" cryptoKey="org.wso2.carbon.security.crypto.privatestore"> 
       <rampart:property name="org.wso2.carbon.security.crypto.alias">myAlias</rampart:property> 
       <rampart:property name="org.wso2.carbon.security.crypto.privatestore">myPrivate.jks</rampart:property> 
       <rampart:property name="org.wso2.stratos.tenant.id">-1234</rampart:property> 
       <rampart:property name="org.wso2.carbon.security.crypto.truststores">myPrivate.jks</rampart:property> 
      </rampart:crypto> 
     </rampart:encryptionCrypto> 
     <rampart:signatureCrypto> 
      <rampart:crypto provider="org.wso2.carbon.security.util.ServerCrypto" cryptoKey="org.wso2.carbon.security.crypto.privatestore"> 
       <rampart:property name="org.wso2.carbon.security.crypto.alias">myAlias</rampart:property> 
       <rampart:property name="org.wso2.carbon.security.crypto.privatestore">myPrivate.jks</rampart:property> 
       <rampart:property name="org.wso2.stratos.tenant.id">-1234</rampart:property> 
       <rampart:property name="org.wso2.carbon.security.crypto.truststores">myPrivate.jks</rampart:property> 
      </rampart:crypto> 
     </rampart:signatureCrypto> 
    </rampart:RampartConfig> 
</wsp:Policy> 

Antwort

0

ich herausgefunden, dass der Benutzer in den Wall Config der Alias ​​des Schlüssels sein sollte, dass Sie sich anmelden verwenden möchten. Und der Passwort-Handler sollte das Passwort des Alias-Schlüssels zurückgeben.

Verwandte Themen