Question

Quand je define (en utilisant un axe 1.4 WSS4J) dans le client config.wsdd pour différentes WSDoAllSender et WSDoAllReceiver signaturePropFiles où j'ai différents magasins clés définis avec des certificats différents, je suis en mesure d'avoir des certificats pour l'envoi et la réception. Mais quand on utilise les mêmes signaturePropFiles' avec le même keystore. Je reçois ce message lorsque je tente d'envoyer un message:

  org.apache.ws.security.components.crypto.CryptoBase -- Cannot find key for alias: [monit] in keystore of type [jks] from provider [SUN version 1.5] with size [2] and aliases: {other, monit}
- Error during Signature: ; nested exception is:
        org.apache.ws.security.WSSecurityException: Signature creation failed; nested exception is:
        java.lang.Exception: Cannot find key for alias: [monit]
org.apache.ws.security.WSSecurityException: Error during Signature: ; nested exception is:
        org.apache.ws.security.WSSecurityException: Signature creation failed; nested exception is:
        java.lang.Exception: Cannot find key for alias: [monit]
        at org.apache.ws.security.action.SignatureAction.execute(SignatureAction.java:60)
        at org.apache.ws.security.handler.WSHandler.doSenderAction(WSHandler.java:202)
        at org.apache.ws.axis.security.WSDoAllSender.invoke(WSDoAllSender.java:168)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:127)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)
        at cz.xxx.opf.model.wsclient.ModelWebServiceSoapBindingStub.getStatus(ModelWebServiceSoapBindingStub.java:213)
        at cz.xxx.opf.wsgemonitor.monitor.util.MonitorUtil.checkStatus(MonitorUtil.java:18)
        at cz.xxx.opf.wsgemonitor.monitor.Test02WsMonitor.runTest(Test02WsMonitor.java:23)
        at cz.xxx.opf.wsgemonitor.Main.main(Main.java:75)
Caused by: org.apache.ws.security.WSSecurityException: Signature creation failed; nested exception is:
        java.lang.Exception: Cannot find key for alias: [monit]
        at org.apache.ws.security.message.WSSecSignature.computeSignature(WSSecSignature.java:721)
        at org.apache.ws.security.message.WSSecSignature.build(WSSecSignature.java:780)
        at org.apache.ws.security.action.SignatureAction.execute(SignatureAction.java:57)
        ... 15 more
Caused by: java.lang.Exception: Cannot find key for alias: [monit]
        at org.apache.ws.security.components.crypto.CryptoBase.getPrivateKey(CryptoBase.java:214)
        at org.apache.ws.security.message.WSSecSignature.computeSignature(WSSecSignature.java:713)
        ... 17 more

Comment avoir deux certificats pour WSS4J dans le même keystore? pourquoi il ne peut pas y trouver mon certificat quand j'ai deux certificats dans un magasin de clés.

J'ai le même mot de passe pour les deux certificats concernant PWCallback (CallbackHandler)

fichier Mes propriétés:

org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin 
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=keystore
org.apache.ws.security.crypto.merlin.keystore.alias=monit
org.apache.ws.security.crypto.merlin.alias.password=***
org.apache.ws.security.crypto.merlin.file=key.jks

Mon client config.wsdd:

  <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
 <globalConfiguration>  
  <requestFlow>
   <handler name="WSSecurity" type="java:org.apache.ws.axis.security.WSDoAllSender">
        <parameter name="user" value="monit"/>
        <parameter name="passwordCallbackClass" value="cz.xxx.opf.common.ws.PWCallback"/>
        <parameter name="action" value="Signature"/>
        <parameter name="signaturePropFile" value="monit.properties"/>
        <parameter name="signatureKeyIdentifier" value="DirectReference" />
        <parameter name="mustUnderstand" value="0"/>
   </handler>
     <handler type="java:org.apache.axis.handlers.JWSHandler">
        <parameter name="scope" value="session"/>
     </handler>
     <handler type="java:org.apache.axis.handlers.JWSHandler">
        <parameter name="scope" value="request"/>
        <parameter name="extension" value=".jwr"/>
     </handler>
   </requestFlow>
   <responseFlow>  
        <handler name="DoSecurityReceiver" type="java:org.apache.ws.axis.security.WSDoAllReceiver">
            <parameter name="user" value="other"/>  
            <parameter name="passwordCallbackClass" value="cz.xxx.opf.common.ws.PWCallback"/>
            <parameter name="action" value="Signature"/>
            <parameter name="signaturePropFile" value="other.properties"/>
            <parameter name="signatureKeyIdentifier" value="DirectReference" />  
        </handler>  
   </responseFlow>

 </globalConfiguration>

 <transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender">  

 </transport>
</deployment>

Liste de keytool: keytool -keystore Monit-key.jks -v -list

Enter keystore password:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 2 entries

Alias name: other
Creation date: Jul 22, 2009
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
....

Alias name: monit
Creation date: Oct 19, 2009
Entry type: trustedCertEntry
Était-ce utile?

La solution

Je résolu qu'il ya mois et si quelqu'un besoin. problème était que je n'ai pas eu la clé privée dans keystore.

Autres conseils

J'utilisais JDK de Sun qui faisait un problème quand je l'ai changé pour IBM JDK problème puis est parti

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top