2016-10-09 2 views
0

Ich habe eine JAVA-Webanwendung erstellt, die SOAP verwendet, um Daten von einem externen Datenbankserver abzurufen. Das funktioniert bis vor ein paar Tagen gut. Jetzt wird die Verbindung zum Datenbankserver beim Einrichten beendet.Got JAVA-Ausnahme: java.security.spec.InvalidKeySpecException: Unbekannte KeySpec-Typ

In meiner JAVA-Protokolldatei, fand ich die folgende Sequenz von Ausnahmen:

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) 

Vielleicht ist der Anbieter des Datenbankservers hat ihr SSL-Zertifikat geändert und bekam eine andere CA-Kette. Ich bemerkte, dass die Zwischen-CA SHA384withRSA als Signaturalgorithmus verwendet. (siehe COMODO, Domain Validation (SHA-2)).

Also, was kann ich tun, um mein System wieder zum Laufen zu bringen? Bitte fragen Sie nach, wenn Sie weitere Informationen benötigen.

Anmerkung: Die gleiche SOAP-Anfrage von einem Windows 7-Client funktioniert einwandfrei. Dort habe ich festgestellt, dass der Windows 7-Client TLSv1.2 verwendet, um die SSL-Verbindung herzustellen. Das Linux-System von meinem Server (siehe unten) verwendet TLSv1,

Die Konfiguration meines Java WebServer:

  • Debian Wheezy
  • Java: OpenJDK 1.7.0u111
  • Tomcat 7.0.28
    • https-Verbindungsstück verwendet JSSE mit sslProtocol = "TLS"
  • BIRT Runtime V4.5.0
    • DTP V1.12.0
    • org.eclipse.datatools.enablement.oda.ws V1.2.6

Dank Fried

+1

Sie müssen Ihren Code bitte posten – user2465510

+0

Es ist schwierig, diesen Teil des Codes hinzuzufügen - weil dieser Fehler innerhalb des BIRT-Frameworks auftritt. Ich habe eine "Web-Service-Datenquelle" in einem BIRT-Bericht verwendet, um die Daten vom SOAP-fähigen Datenbankserver abzurufen. Daher ist der Code im [Eclipse-Projekt] (https://eclipse.org/datatools/downloads.php) öffentlich verfügbar. (DTP V1.12.0, org.eclipse.datatools.enablement.oda.ws V1.2.6). – Friedbert

Antwort

1

gelöst!

Anscheinend stimmte die Konfiguration des Tomcat-Connectors nicht mehr mit den aktuellen Sicherheitsstandards überein.

Ich hatte das System vor 2 Jahren eingerichtet. Aber die Sicherheitsanforderungen haben sich in der Zwischenzeit erhöht.

Jetzt habe ich einen letzten Gerät von Turnkey, verglichen die Einstellungen und fand ein paar Unterschiede:

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) 

Mit diesen Änderungen mein System wieder funktioniert!