当前位置: 首页 > 面试题库 >

SunTlsRsaPremasterSecret KeyGenerator不可用

朱宏爽
2023-03-14
问题内容

我的应用程序尝试从JAVA加载RSA算法提供程序类时遇到错误。异常堆栈如下:

javax.jms.JMSException: RSA premaster secret error
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)
at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1255)
at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1350)
at org.apache.activemq.ActiveMQConnection.setClientID(ActiveMQConnection.java:388)
at com.trendmicro.tmsm.TMSMAgent.open(TMSMAgent.java:63)

Caused by: javax.net.ssl.SSLKeyException: RSA premaster secret error
at com.sun.net.ssl.internal.ssl.RSAClientKeyExchange.<init>(RSAClientKeyExchange.java:97)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:634)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:226)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:516)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:454)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1112)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:623)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
at org.apache.activemq.transport.tcp.TcpBufferedOutputStream.flush(TcpBufferedOutputStream.java:115)
at java.io.DataOutputStream.flush(DataOutputStream.java:106)
at org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:167)
at org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:237)
at org.apache.activemq.transport.WireFormatNegotiator.sendWireFormat(WireFormatNegotiator.java:168)
at org.apache.activemq.transport.WireFormatNegotiator.sendWireFormat(WireFormatNegotiator.java:84)
at org.apache.activemq.transport.WireFormatNegotiator.start(WireFormatNegotiator.java:74)
at org.apache.activemq.transport.failover.FailoverTransport.doReconnect(FailoverTransport.java:715)
at org.apache.activemq.transport.failover.FailoverTransport$2.iterate(FailoverTransport.java:115)
at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:637)

Caused by: java.security.NoSuchAlgorithmException: SunTlsRsaPremasterSecret KeyGenerator not available
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:89)
... 22 more

我已经搜索了错误消息,并且大多数帖子都说这是因为JVM无法找到sunjce_provider.jar。但是,我可以在/ Library / Java /
Home / lib / ext文件夹中找到该文件。

该平台是Mac OS X 10.6,Java版本是1.6.0_17。

我的问题是:

  1. 为什么JVM不会在/ Library / Java / Home / lib / ext中搜索jar文件?
  2. 我们可以通过修改任何配置文件来更改CLASSPATH或java.ext.dirs属性吗?
  3. 有解决这个问题的建议吗?

提前致谢。


问题答案:

我认为我们找到了根本原因,所以这是我自己的问题的答案。

  1. Mac OS X 10.5中的Java系统属性“ java.ext.dirs”为:/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0 / home / lib / ext。sunjce_provider.jar应该在/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/lib/ext中,但也可以在问题Mac的/ Library / Java / Extensions /中找到。

  2. / Library / Java / Extensions /中的sunjce_provider.jar属于Java加密扩展(JCE)1.2.2,已安装在Mac中。JCE 1.2.2是J2SE 1.3.1的可选软件包,可能没有足够的库供J2SE 1.4及更高版本使用。

  3. 从/ Library / Java / Extensions /中删除所有与JCE 1.2.2相关的jar文件之后,Java应用程序即可正常工作。



 类似资料:
  • 问题内容: 我的应用程序在Instagram上共享照片,为此,首先将其保存在一个临时目录中: 它正在工作,但不起作用。 给定的错误消息是: stringByAppendingPathComponent不可用:在NSURL上使用URLByAppendingPathComponent。 问题答案: 看来该方法已在Swift 2.0中删除,因此错误消息建议使用: 更新: 已被替换为:

  • 问题内容: 此前的情况下,你能够传递的或。 不再可用,我应该怎么用呢? (这是一个规范的Q&一对,以防止与此相关的重复的问题洪水和变化与iOS 10和SWIFT 3) 问题答案: Swift 3更新: 看来Xcode 8 / Swift 3带回来了: 已重命名为iOS SDK和从iOS SDK中删除。对于“普通”选项,请使用一个空数组来构造一个空选项集。

  • 我将Spring Security从2升级为3 以前的security.xml具有AuthenticationProcessingFilter和AuthenticationProcessingFilterEntryPoint

  • 我在Windows子系统Linux上安装了kafka,并开始使用命令服务启动,所有服务都已启动。现在,当我尝试从Windows运行我的kafka-spring应用程序时,它显示以下错误:- 无法建立与节点-1(localhost/127.0.0.1:9092)的连接。经纪人可能不可用。 我的服务器属性是:- 我哪里出错了???

  • Java版本:JDK-8.0.144 参考: nosuchAlgorithmException:SSL_TLSv2 SSLContext不可用#我使用的是tomcat而不是websphere,所以第2点的答案不太相关。 https://community.hitachivantara.com/s/question/0d52s00007thjo2sae/how-to-fix-tls-sslconte