【发布时间】:2016-01-14 15:17:00
【问题描述】:
我开发了一个访问 ssl web 服务的 Java 应用程序。
我使用带有基本身份验证的 java 6 jax-ws 来访问这个 ws。
我配置了我的本地机器(windows)来查询这个网络服务。
从证书的角度来看,我设置了 2 个密钥库:一个包含 2 个条目的客户端密钥库:一个用于我的私钥和 一个用于我的证书,由 CA 签名。另一个 keystore , truststore ,为我的应用服务器(那个来宾 ws)保存一个条目。
这是一个自签名证书,当然,我的客户对此有所抱怨。我找到了here 解决此错误的方法,并将此证书导入到我的信任库中。现在我可以从我的本地机器上查询 ws 了。
在 PreProduction 机器 (RHEL 5) 上,我收到相同的错误消息“
PKIX 路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到请求目标的有效认证路径”
我尝试做同样的事情。但是当我运行时:
java InstallCert my_ip:ssl_port changeit
我得到以下输出
Loading KeyStore cacerts...
Opening connection to my_ip:ssl_port...
Starting SSL handshake...
Exception in thread "Main Thread" java.lang.NoClassDefFoundError: javax/crypto/SunJCE_b
at javax.crypto.KeyGenerator.a(DashoA13*..)
at javax.crypto.KeyGenerator.<init>(DashoA13*..)
at javax.crypto.KeyGenerator.getInstance(DashoA13*..)
at com.sun.net.ssl.internal.ssl.JsseJce.getKeyGenerator(JsseJce.java:223)
at com.sun.net.ssl.internal.ssl.RSAClientKeyExchange.<init>(RSAClientKeyExchange.java:91)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:744)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:238)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:958)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1203)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1230)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1214)
at InstallCert.main(InstallCert.java:58)
类 javax.crypto.sunJCE_b 有一个来自 jre/lib 的 jce.jar。你怎么看?
另一个问题:我在 windows 中获得的信任库(包含导入的服务器证书的信任库)不可移植?
我在windows上用的那个,在linux上也可以复制,不是吗?
【问题讨论】:
-
大家好,我尝试获取自签名证书并将其加载到我的信任存储中 - 为此我使用了 InstallCert 托管 ws 的 Web 服务器的管理员告诉我应该禁用验证自签名证书并将其视为受信任。我该如何禁用验证?在我的代码中,我可以访问以下对象:oracle.adf.share.ADFContext 和 oracle.adf.share.security.providers.jps.JpsSecurityContext;谢谢,奥雷尔
标签: java web-services ssl