0

我在尝试连接到需要客户端证书的安全 Web 服务时遇到此异常(未找到客户端证书)。我正在使用由axis2 自动生成的Web 服务客户端,使用Eclipse 向导。

这是调用代码,导致最后一行出现异常:

System.setProperty("javax.net.ssl.trustStore","C:\\Archivos de programa\\Java\\jre7\\lib\\security\\cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStore","D:\\Perfil Usuario\\internet\\Escritorio\\workspace\\certificados\\clientes.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
ServicioBoletinStub lala = new ServicioBoletinStub();
ConsultaDeCatalogo cons = new ConsultaDeCatalogo();
cons.setArgs0("SECCIONES");
ConsultaDeCatalogoResponse conResp = lala.consultaDeCatalogo(cons);

客户端证书在“clientes.jks”密钥库中导入,身份验证路径所需的所有其他证书都在“cacerts”中。

我必须做的唯一奇怪的事情是将客户端证书从 .p12 转换为 .cer,因为 keytool 抱怨 .p12 文件不是 x509 证书。.p12 文件是用密码加密的,但 .cer 文件不是,所以我担心在转换过程中丢失了一些东西。我对处理证书很陌生,所以我不知道我错过了什么。

我还用 SSLPoke 测试了连接,没有报错。

非常感谢。

4

1 回答 1

1

好的,问题出在客户端证书的导入过程中,正如怀疑的那样。Keytool 没有将私钥导入“clientes.jks”密钥库。

我从这个密钥库中删除了所有内容,并按照这篇文章(http://cunning.sharp.fm/2008/06/importing_private_keys_into_a.html)导入了客户端证书和私钥。

无论如何,我认为 Axis2 应该指定异常消息来自 SOAP 响应消息:我认为它是自己生成的。

于 2013-04-29T18:10:45.217 回答