2017-03-23 7 views
0

WSO2 ESB 5.0 서버가 실행 중입니다. 우리는 일반적인 SOAP 메시지를 서명 된 버전으로 변환하고 이것을 엔드 포인트로 전달하는 서비스를 만들고자한다. org.apache.ws.security.WSSecurityException :Rampart : 비공개/키 인증서로 비누 메시지 수신 실패

에 의해 발생 :

우리는 메시지를 받고 일반 보안 오류

(사용자 wso2carbon에 대한 어떠한 인증서는 서명을 찾을 수 없습니다)

왜이 메시지가 나옵니까? 나는 이것의 의미를 이해하지 못한다.

업데이트 : rampart 구성의 사용자가 서명에 사용하려는 키의 별칭이어야한다고 생각했습니다. 그리고 암호 핸들러가

버렸네 키 별명의 암호를 반환해야합니다 (WSO2 ESB) 서비스는 다음과 같습니다

<?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> 

성벽의 구성은 JKS 키 저장소를 가리키는하는 개인/퍼브 인증서입니다 암호에 의해로드 보호 :

<?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> 

답변

0

나는 성벽의 설정에서 사용자는 로그인 할 때 사용하려는 키의 별칭해야한다고, 알아 냈어. 그리고 암호 처리기는 별칭 키의 암호를 반환해야합니다.