JavaのプログラムからSQLserverにつながらなくなった、という話があったので調査。
Javaのプログラムの吐いているエラーログにはSSLv3とかTLS1.1で繋がらない、っていうのがありました。
接続先のSQLserverのサーバ機は、2012終息対応で2019にしました。
ついでに、TLS1.2だけにしました。
繋がらないのはそのせいで間違いないでしょう。
JavaはJava7を未だに使っているらしい。。。2015年に終了してるのではなかったろうか。
検証のため、TLS1.2だけにした2019にSQLServerをインストールして、Java7とJava8をインストール。sqljdbc41.jarを落としてきて、SQLServerに接続してここにある「ネットワークの暗号化を確認する」を実行するJavaプログラムを用意しました。
用意した、と言ってもこちらのほぼマルパクリです。ありがとうございます。
(CLASSPATHの設定方法がよくわかってなかったので、難航しました。
set CLASSPATH=.;C:\sqljdbc41.jar のように最初に.;が必要だった。
Javaプログラム本体へのPATHが必要、ということかな。)
WireSharkでlocalhostの通信を観察していると、
Java7:TLS1.1でClientHeloを行っているが応答がないので終了
Java8:TLS1.2でClientHeloを行ってなんか送って、そのあと平文で通信
という状態でした。
SQLは平文で通信するくせに、最初だけ暗号通信・・・。
そうか、IDとパスワードは暗号化しているのか。なるほど。
「Java8使えや」で終了にしよう。
BuffaloのNASであるLS220Dの赤色LEDが点滅していました。。。 HDD故障だそうです。 元から入っていたのは、東芝の1TB(TOSHIBA DT01ACA1)でした。 手元にWDの2TB(WD20EARS)、4TB(WD40EZRX)、6TB(WD60EZAZ)、SeaGateの4TB(ST4000DM000)、8TB(ST8000AS0002)が あったので、後日容量アップができるのでは、と思い入れてみました。 RAID再構築をクリックしてみたら・・・ WD 2TB:「指定したメソッドに対するパラメータが不正です。」 4TB:「指定したメソッドに対するパラメータが不正です。」 6TB:リビルド成功 SeaGate 4TB:「指定したメソッドに対するパラメータが不正です。」 8TB:「指定したメソッドに対するパラメータが不正です。」 という散々な結果でした。 何がダメなんだろう?と思い返してみると、WDの6TBだけは未使用の ものでした。 ほかのHDDは入れる前にパーティション情報をWindows上で消したけど、 もしかしてMBR領域(というかHDDの先頭セクタ0)になにか情報があると ダメなのかも。 ということで、Linux機にWD 4TB(/dev/sdb)をつないで、 sudo dd if=/dev/zero of=/dev/sdb bs=512 count=1 sudo sgdisk -Z /dev/sdb を実行してからLS220に入れました。 「破損」という表示になってしまいしたが、RAID再構築を押すと 再構築が始まった、、、、ぽい。
コメント
コメントを投稿