いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

JetBrains DataGrip で Cannot connect to a database because of SSLHandshakeException って出る件

概要

以下、自分用のメモです。忘れないうちにメモメモ。。。

だいぶ前のバージョンのSQL SERVERに接続しようとDataGripでデータソース設定をしたところ

Cannot connect to a database because of SSLHandshakeException

ってエラーが出て接続できないパターンがありました。

原因と解決方法については、JetBrainsさんのドキュメントで記載されています。

www.jetbrains.com

上を見るとやり方も書いてあるのですが、原因としてはJava側のセキュリティポリシーにて、TLS1.0, TLS1.1が無効化されていたからでした。

セキュリティポリシーについては以下に記載があります。

https://www.java.com/en/jre-jdk-cryptoroadmap.html

んで、解決方法ですが、以下のようにします。以下はSQL SERVERの場合の話です。

  1. custom.java.security (たぶんファイル名も何でも良い)というファイルをどこかに作る。

ファイルの内容は以下のようにします。

jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \
     DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
     include jdk.disabled.namedCurves
  1. DataGripのデータソースの詳細タブ(Advanced) のところに VMオプションを指定できるフィールドがあるので以下を設定する。
-Djava.security.properties=上で作成したcustom.java.securityファイルのフルパス
  1. メインメニューの「ファイル」→「キャッシュの破棄」から再起動する

これで再起動後は警告が出ますが、接続できるようになりました。

参考情報

www.jetbrains.com

pleiades.io


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。