> Hello World !!!

     

@syaku

Java Database Connection TLS 보안 이슈

The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "The server selected protocol version TLS10 is not accepted by client preferences [TLS12]

드라이버가 SSL(Secure Sockets Layer) 암호화를 사용하여 SQL Sever로 보안 연결을 설정할 수 없습니다. 오류: "The server selected protocol version TLS10 is not accepted by client preferences [TLS12]".

데이터베이스 연결할때 위와 같은 오류가 발생한다. 위 이슈는 SQL Server 대상이지만 다른 DBMS도 동일하게 발생될 수 있다. 이유는 자바 1.8.0_291 버전부터 보안적인 이슈로 TLS 1.0, TLS 1.1 을 비활성화되었기 때문이다.

참고: 당장 설정으로 할 수 없고 해결하려면 낮은 버전의 자바 바이너리를 받아 구동시킬 수 있다.

해결 방법

자바 버전이 1.8.0_291 이상인 버전인지 확인한다.

$ java -version

$ vi JAVA_HOME/jre/lib/security/java.security

# AS-IS
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \

# TO-BE
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \

비활성화된 TLSv1, TLSv1.1 을 제거한다.

이후 정상적으로 연결은 되지만 아래와 같은 경고가 출력된다.

TLSv1 was negotiated. Please update server and client to use TLSv1.2 at minimum.

이슈를 해결하기 위해서는 Server TLSv1.2 방식으로 변경해야 한다.