gpt4 book ai didi

java - 线程 "Main Thread"java.lang.NoClassDefFoundError : javax/crypto/SunJCE_b 中的异常

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:34 26 4
gpt4 key购买 nike

我开发了一个访问 ssl 网络服务的 Java 应用。

我使用带有基本身份验证的 java 6 jax-ws 来访问这个 ws。

我将我的本地计算机 (windows) 配置为查询此 Web 服务。

从证书的角度来看,我设置了 2 个 keystore :一个包含 2 个条目的客户端 keystore :一个用于我的私钥和 一个用于我的证书,由 CA 签名。另一个 keystore , truststore ,为我的应用程序服务器(ws guest )保存一个条目。

这是一个自签名证书,当然,我的客户对此有所提示。我找到了 here这个错误的解决方法,我在我的信任库中导入了这个证书。现在我可以从我的本地机器查询 ws。

在预生产机器 (RHEL 5) 上,我收到相同的错误消息“

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"

我试过做同样的事情。但是当我运行时:

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上也能复制出来,不是吗?

最佳答案

正如您所说的 jar 存在,您可能需要将其添加到您的类路径,如下所示:

java -cp /path/to/jce.jar:. InstallCert my_ip:ssl_port changeit

要仅列出类路径,请参阅 https://stackoverflow.com/a/17541055/1587329 .

至于

Another question: my truststore that I get in windows (the one that contain the imported server certificate) is not portable?

The one that I used on windows , I can copy it on linux , isn't it?

建议重新创建:Migrating a certificate keystore to another JVM

关于java - 线程 "Main Thread"java.lang.NoClassDefFoundError : javax/crypto/SunJCE_b 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34793067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com