SunTlsRsaPremasterSecret KeyGenerator, не доступный

Я встретился с ошибкой, когда мое приложение пытается загрузить класс поставщика Алгоритма RSA из JAVA. Стопка исключения следующие:

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 файлы банки?
  2. Мы можем изменить ПУТЬ К КЛАССУ, или java.ext.dirs свойство изменяют какой-либо файл конфигурации?
  3. Какое-либо предложение для решения этой проблемы?

Заранее спасибо.

13
задан Jill 20 May 2010 в 09:38
поделиться

1 ответ

Я думаю, что мы нашли первопричину, поэтому вот ответ на мой собственный вопрос.

  1. системное свойство Java "java.ext.dirs" в Mac OS X 10.5 имеет следующий вид: /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, но также может быть найден в /Library/Java/Extensions/ в проблемном mac.

  2. sunjce_provider.jar в /Library/Java/Extensions/ принадлежит Java Cryptography Extension(JCE) 1.2.2, который был установлен на mac. JCE 1.2.2 является дополнительным пакетом J2SE 1.3.1 и может не включать достаточное количество библиотек для J2SE 1.4 и более поздних версий.

  3. приложение Java работает нормально после удаления всех связанных с JCE 1.2.2 jar-файлов из /Library/Java/Extensions/.

2
ответ дан 1 December 2019 в 19:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: