javax.net.ssl.SSLException: сервер выбрал неправильный набор шифров SSL_RSA_WITH_DES_CBC_SHA
Когда апплет обслуживается через HTTPS-соединение, я получаю следующее исключение.
Эта проблема возникает в Java 1.7.0_25, но не в Java 1.6.
когда я смотрю на набор микросхем, поддерживаемый Java ( http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html), я вижу SSL_RSA_WITH_DES_CBC_SHA в списке.
Есть ли кто-нибудь испытывает эту ошибку? и что я должен сделать, чтобы справиться с этой ошибкой?
Java Plug-in 10.25.2.15
Using JRE version 1.7.0_25-b15 Java HotSpot(TM) 64-Bit Server VM
User home directory = /home/mithat
----------------------------------------------------
network: Cache entry not found [url: https://mytest.domain.tr/LoginWeb/myapplet.jar, version: null]
network: Connecting https://mytest.domain.tr/LoginWeb/myapplet.jar with proxy=DIRECT
network: Connecting http://mytest.domain.tr:443/ with proxy=DIRECT
javax.net.ssl.SSLException: Server selected improper ciphersuite SSL_RSA_WITH_DES_CBC_SHA
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:266)
at sun.security.ssl.ClientHandshaker.serverHello(ClientHandshaker.java:464)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:143)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:515)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
at sun.plugin.PluginURLJarFileCallBack.connect(Unknown Source)
at sun.plugin.PluginURLJarFileCallBack.retrieve(Unknown Source)
at sun.net.www.protocol.jar.URLJarFile.retrieve(URLJarFile.java:205)
at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:71)
at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:88)
at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:122)
network: Cache entry not found [url: https://mytest.domain.tr/LoginWeb/myapplet.jar, version: null]
...
network: Cache entry not found [url: https://mytest.domain.tr/LoginWeb/test/AppletTest.class, version: null]
network: Connecting https://mytest.domain.tr/LoginWeb/test/AppletTest.class with proxy=DIRECT
network: Connecting http://mytest.domain.tr:443/ with proxy=DIRECT
java.lang.ClassNotFoundException: test.AppletTest
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Thread.java:724)
...
security: Reset deny session certificate store
basic: Dialog type is not candidate for embedding
2 ответа
Скорее всего, проблема может быть связана с настройкой обратного прокси. Например, в Apache вы должны установить ниже параметры.
ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar
Вы можете найти подобную опцию для других обратных прокси-серверов.
Мы проверили сеть с помощью Wireshark и выяснили, что сервер выбирает упомянутый набор микросхем, который на самом деле не в клиент-привет и отключен на Java8. После изменения SSL-модуля сетевого устройства проблема устранена. Вы можете найти поддерживаемые наборы микросхем по умолчанию в Java здесь.