【问题标题】:certification based authentication for secure web service用于安全 Web 服务的基于认证的身份验证
【发布时间】:2017-06-20 15:45:02
【问题描述】:

我正在使用我的应用程序中的外部 Web 服务。目前只有选定的 IP 地址被列入白名单。现在 web 服务建议在调用 web 服务时使用 jks 密钥传递自签名证书,以避免将 ip 列入白名单的过程。

webservice 客户端当前使用的是axis 1.3 api。经过探索,我找出了生成 jks 文件的 keytool 命令,并在调用服务之前使用下面的代码设置 jvm 参数

System.setProperty("javax.net.ssl.keyStore", "C:/migration/temp/keystore.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "C:/migration/temp/cacerts.jks");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

但它不起作用,而是我得到了以下异常

Thread-1,调用 closeSocket() 线程 1,处理异常:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException: PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到有效 请求目标的认证路径

我的问题是有没有其他方法可以实现这一点。

【问题讨论】:

  • 该服务是否需要 1-way SSL 或 2-way SSL 身份验证?
  • 该错误是由于您必须信任服务器证书。在C:/migration/temp/cacerts.jks 中包含服务器证书的根CA。在执行证书认证之前发生错误
  • 它的单向 SSL。此外,在从 SOAPUI 或 URLConnection 调用时,我得到了正确的响应,而没有从未列入白名单的同一 IP 地址配置任何证书
  • @pedrofb 我在 cacerts 中添加了证书,但仍然出现以下异常。 AxisFault faultCode:{schemas.xmlsoap.org/soap/envelope}客户端 faultSubcode:faultString:IP 10.16.18.141 不在允许的 IP 列表中。 (来自客户)
  • 似乎是从服务器收到一个Fault,所以这意味着在SSL握手期间,客户端已经成功验证了服务器证书。写信给您的服务器提供商,将您的 IP 添加到白名单中

标签: authentication certificate axis keystore


【解决方案1】:

您可以编写一个简单的 Java 可执行文件以使用您设置的属性打开 SSL 连接并在调试模式下运行代码,如下所示:

java -Djavax.net.debug=all -Djavax.net.ssl.trustStore=trustStore ...

http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#Debug

看看会发生什么。

【讨论】:

  • 我只是这样做。添加调试所有属性后出现上述异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-06
  • 2013-01-20
  • 2013-10-24
相关资源
最近更新 更多