title: wss4j: - Cannot find key for alias: monit
body: <p>When I define (using axis 1.4 an wss4j) in client-config.wsdd for WSDoAllSender and WSDoAllReceiver different signaturePropFiles where I have different key stores defined with different certificates, I'm able to have different certificates for sending and receiving. But when I use the same signaturePropFiles' with the same keystore. I get this message when I try to send a message:</p>
  
  <pre><code>  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
  </code></pre>
  
  <p>How to have two certificates for wss4j in the same keystore? why it cannot find my certificate there when i have two certificates in one keystore. </p>
  
  <p>I have the same password for both certificates regarding PWCallback (CallbackHandler)</p>
  
  <p>My properties file:</p>
  
  <pre><code>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
  </code></pre>
  
  <p>My client-config.wsdd:</p>
  
  <pre><code>  &lt;deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"&gt;
   &lt;globalConfiguration&gt;  
    &lt;requestFlow&gt;
     &lt;handler name="WSSecurity" type="java:org.apache.ws.axis.security.WSDoAllSender"&gt;
          &lt;parameter name="user" value="monit"/&gt;
          &lt;parameter name="passwordCallbackClass" value="cz.xxx.opf.common.ws.PWCallback"/&gt;
          &lt;parameter name="action" value="Signature"/&gt;
          &lt;parameter name="signaturePropFile" value="monit.properties"/&gt;
          &lt;parameter name="signatureKeyIdentifier" value="DirectReference" /&gt;
          &lt;parameter name="mustUnderstand" value="0"/&gt;
     &lt;/handler&gt;
       &lt;handler type="java:org.apache.axis.handlers.JWSHandler"&gt;
          &lt;parameter name="scope" value="session"/&gt;
       &lt;/handler&gt;
       &lt;handler type="java:org.apache.axis.handlers.JWSHandler"&gt;
          &lt;parameter name="scope" value="request"/&gt;
          &lt;parameter name="extension" value=".jwr"/&gt;
       &lt;/handler&gt;
     &lt;/requestFlow&gt;
     &lt;responseFlow&gt;  
          &lt;handler name="DoSecurityReceiver" type="java:org.apache.ws.axis.security.WSDoAllReceiver"&gt;
              &lt;parameter name="user" value="other"/&gt;  
              &lt;parameter name="passwordCallbackClass" value="cz.xxx.opf.common.ws.PWCallback"/&gt;
              &lt;parameter name="action" value="Signature"/&gt;
              &lt;parameter name="signaturePropFile" value="other.properties"/&gt;
              &lt;parameter name="signatureKeyIdentifier" value="DirectReference" /&gt;  
          &lt;/handler&gt;  
     &lt;/responseFlow&gt;
  
   &lt;/globalConfiguration&gt;
  
   &lt;transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender"&gt;  
  
   &lt;/transport&gt;
  &lt;/deployment&gt;
  </code></pre>
  
  <p>Listing from keytool:
  keytool -keystore monit-key.jks -v -list</p>
  
  <pre><code>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
  </code></pre>