LoginSignup
6
3

More than 1 year has passed since last update.

SQL Server JDBCでTLSエラーが出る時の対処法

Last updated at Posted at 2021-08-04

SQL Serverのサーバー側がTLS1を使用していると、セキュリティの制限でエラーとなることがある。

環境
Debian 10
OpenJDK 8 JRE Headless
Python 3.9
SQL Server JDBC 9.2.1.0 Jpn

エラー

com.microsoft.sqlserver.jdbc.SQLServerException: com.microsoft.sqlserver.jdbc.SQLServerException: ドライバーが SSL (Secure Sockets Layer) 暗号化による SQL Server への安全な接続を確立できませんでした。エラー: "The server selected protocol version TLS10 is not accepted by client preferences [TLS12]"。

Javaの場所を探す

$ /usr/sbin/update-java-alternatives -l
java-1.8.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.8.0-openjdk-amd64

参考:https://symfoware.blog.fc2.com/blog-entry-1166.html

java.securityを編集

jre/lib/security/java.securityという設定ファイルを確認すると、
クライアント側のTLSについて下記の設定が見つかる。
ここでTLSv1が制限されていることが当初のエラーの原因

なお、JDK 11では、/conf/security/java.securityにある。

$ cat /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/security/java.security

(略)
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves
(略)

$ cat /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/security/java.security

(略)
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves
(略)

としてやればok.
後ろの行が優先されるので、編集ではなく末尾に新たな行を作って追記しても動作する。

参考:
https://stackoverflow.com/questions/32466407/how-to-force-java-server-to-accept-only-tls-1-2-and-reject-tls-1-0-and-tls-1-1-c

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3