現象の説明
docker-compose up でコンテナを起動します。
その後、ローカル環境でアプリケーションにアクセスしようとしたら以下のエラーが出ました。
com.microsoft.sqlserver.jdbc.SQLServerException:
The driver could not establish a secure connection to the server.
Reason: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
解決手順
ポイント:java.security ファイルを修正するだけ
-
docker-compose up した後、まずコンテナに入ります。
docker exec -it [コンテナ名] /bin/bash
-
java.security ファイルのあるディレクトリまで移動します。
cd /etc/java-8-openjdk/security
-
vimコマンドで java.security を編集しましょう。
vim java.security
※vimが入ってない場合は以下のコマンド打つ
apt-get install vim
-
修正箇所を /tls と打って検索します。探したいコードは以下です。
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
java.securityにはtlsを含む文字列が散らばっているので、一発ではたどり着けないかもしれません。そのときは、/tlsを一度全て消した後、n を押すと次の検索結果に飛べます。
-
以上。コンテナを再起動してアプリにアクセスするとエラーが解消されているはず!
参考
環境情報
- Mac OS X Catalina
- Java(docker コンテナ内)
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.7
BuildVersion: 19H1323
$ java -version
openjdk version "1.8.0_302"
OpenJDK Runtime Environment (build 1.8.0_302-8u302-b08-1~deb9u1-b08)
OpenJDK 64-Bit Server VM (build 25.302-b08, mixed mode)