2016-10-09 11 views
0

Я создал веб-приложение JAVA, которое использует SOAP для извлечения данных с внешнего сервера базы данных. Это прекрасно работает до нескольких дней назад. Теперь соединение с сервером базы данных завершается при их создании.Исключено исключение JAVA: java.security.spec.InvalidKeySpecException: Неизвестный тип KeySpec

В моем файле журнала JAVA, я нашел следующую последовательность исключений:

javax.net.ssl.SSLException: Server key 
    at sun.security.ssl.Handshaker.throwSSLException(Handshaker.java:1260) 
    at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:283) 
    ... 
Caused by: java.security.spec.InvalidKeySpecException: Unknown KeySpec type: java.security.spec.ECPublicKeySpec 
    at org.bouncycastle.jce.provider.asymmetric.ec.KeyFactory.engineGeneratePublic(Unknown Source) 
    at java.security.KeyFactory.generatePublic(KeyFactory.java:334) 

Возможно, поставщик сервера базы данных изменила свой сертификат SSL и получил другой ЦС цепи. Я заметил, что промежуточный СА использует SHA384withRSA в качестве сигнатурного алгоритма. (см. COMODO, Domain Validation (SHA-2)).

Итак, что я могу сделать, чтобы снова запустить мою систему? Пожалуйста, спросите, если вам нужна дополнительная информация.

Примечание. Тот же запрос SOAP от клиента Windows 7 отлично работает. Там я заметил, что клиент Windows 7 использует TLSv1.2 для установления SSL-соединения. Система Linux моего сервера (смотрите ниже) использует TLSv1,

конфигурации моего Java WebServer:

  • Debian свистящих
  • Java: OpenJDK 1.7.0u111
  • Tomcat 7.0.28
    • разъем использует протокол HTTPS JSSE с SSLProtocol = "TLS"
  • BIRT Время воспроизведения V4.5.0
    • DTP V1.12.0
    • org.eclipse.datatools.enablement.oda.ws v1.2.6

Благодаря Friedbert

+1

Вам нужно будет выслать свой код – user2465510

+0

Трудно добавить эту часть кода - потому что эта ошибка возникает в рамках BIRT. Я использовал «источник данных веб-сервиса» в отчете BIRT для получения данных с сервера базы данных, поддерживающего SOAP. Таким образом, код доступен для общественности в проекте [Eclipse] (https://eclipse.org/datatools/downloads.php). (DTP V1.12.0, org.eclipse.datatools.enablement.oda.ws V1.2.6). – Friedbert

ответ

1

Решено!

По-видимому, конфигурация разъема tomcat больше не соответствовала текущим стандартам безопасности.

Я создал систему 2 года назад. Однако требования к безопасности увеличились за это время.

Теперь я принял недавно прибор из под ключ, по сравнению настроек и нашли несколько отличий:

JAVA: java.security 
    security.provider.10=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg 
Tomcat7: server.xml /Connector 
    protocol="org.apache.coyote.http11.Http11NioProtocol" 
    sslProtocol="TLSv1.2" sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1" 
    server="Secret" URIEncoding="UTF-8" (may be, these does not matter) 

С учетом этих изменений, моя система работает снова!

 Смежные вопросы

  • Нет связанных вопросов^_^