Von den Änderungen in Java SE 6.0 Update 29 zum Schutz vor SSL BEAST Angriffen hatte ich schon berichtet. Ein Opfer dieser Kompatibilitätsänderung sind die JDBC Treiber für den Microsoft SQL Server (jTDS und Microsoft JDBC Driver for SQL Server sind betroffen).
Beim Aufbau der Verbindung (TCP) direkt mit dem jTDS Treiber kommt es zu folgendem Fehler:
Und die folgende Exception wirft der Microsoft JDBC Driver for SQL Server:
Wenn die Treiber durch einen Connection Pool benutzt werden, oder innerhalb einer Datasource, so kann es sogar zum Hängen (wegen Endlosschleife) kommen.
Eine Möglichkeit ist es, beim jTDS Treiber anzugeben, dass man kein SSL machen möchte (sollte aber eigentlich auch der default sein, laut jTDS FAQ). Dies kann man mit dem JDBC URL Property "
Eine weitere Möglichkeit ist es den SSL/TLS CBC-Fix per Java System Property abzuschalten:
Dies wirkt sich aber auf alle anderen SSL Verbindungen innerhalb dieser VM ebenfalls aus. Es gibt Berichte, dass dieses Problem mit JavaSE 6.0 Update 30 behoben sei, das kann ich aber weder nachvollziehen, noch lassen die ReleaseNotes darauf schließen. Ich habe mal einen Fehlerbericht bei jTDS dazu geöffnet.
Beim Aufbau der Verbindung (TCP) direkt mit dem jTDS Treiber kommt es zu folgendem Fehler:
java.sql.SQLException: I/O Error: Software caused connection abort: recv failed State : 08S01 Error : 0
Und die folgende Exception wirft der Microsoft JDBC Driver for SQL Server:
com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset State : 08S01 Error : 0
Wenn die Treiber durch einen Connection Pool benutzt werden, oder innerhalb einer Datasource, so kann es sogar zum Hängen (wegen Endlosschleife) kommen.
Eine Möglichkeit ist es, beim jTDS Treiber anzugeben, dass man kein SSL machen möchte (sollte aber eigentlich auch der default sein, laut jTDS FAQ). Dies kann man mit dem JDBC URL Property "
;ssl=no" erreichen. Wenn der Server allerdings auf "Force Encryption" konfiguriert ist, so wird er dann die Logins ablehnen. Beim Microsoft Treiber würde das property "encrypt=false" lauten, dies half aber in meinen Versuchen (mit MS SQL Server 2008 R2 Express) nicht.Eine weitere Möglichkeit ist es den SSL/TLS CBC-Fix per Java System Property abzuschalten:
-Djsse.enableCBCProtection=falseDies wirkt sich aber auf alle anderen SSL Verbindungen innerhalb dieser VM ebenfalls aus. Es gibt Berichte, dass dieses Problem mit JavaSE 6.0 Update 30 behoben sei, das kann ich aber weder nachvollziehen, noch lassen die ReleaseNotes darauf schließen. Ich habe mal einen Fehlerbericht bei jTDS dazu geöffnet.
Trackbacks
Trackback-URL für diesen Eintrag
Keine Trackbacks
Layout by Ricky Wilson | Serendipity Template by Carl Galloway | Login
Impressum
Bernd Eckenfels
Mörscher Str. 8
76185 Karlsruhe
bernd-2012@eckenfels.net
Read More
Suche
Kategorien
Verlinkung
- berichtet [80]
- jTDS [31]
- Microsoft JDBC Driver for SQL
Server [30] - jTDS FAQ
- Fehlerbericht bei jTDS [44]
- www.google.de [2]
- www.google.com [2]
Kommentare
2012-02-08 08:01
Bernd zu Passwortsicherheit
2012-02-04 17:28
123 zu Passwortsicherheit
2012-02-04 14:43
bl123 zu Passwortsicherheit
2012-02-04 14:25
Edith - die Zauberkünstlerin zu Passwortsicherheit
2012-02-04 13:00
Bernd zu Passwortsicherheit
2012-02-04 10:59
Oliver// zu Passwortsicherheit
2012-02-04 10:34
Christian zu Passwortsicherheit
2012-02-03 14:53
Michael zu Java Stream mit Puffer einlesen
2011-12-13 08:06
Blog abonnieren
Blogsphere
Letzten Monat...
Sa, 14.01.2012"E-Mail versenden von Amazon EC2 (SES mit Exim)"
Sa, 07.01.2012"Java 7 - Probleme mit neuen JSSE Features"
Di, 03.01.2012"Eckpunktepapier der BNetzA zu Smart Grids und Markets"
So, 01.01.2012"SQL Server JDBC Probleme"
Fr, 30.12.2011"Facebook Events im Google Kalender"
