트러블 슈팅

TLS로 인한 DB 커넥션이 안될때

베어그릴스 2022. 8. 26. 09:40
반응형

TLS(Transport Layer Security)는 무엇입니까?

TLS(Transport Layer Security)는 인터넷 상의 커뮤니케이션을 위한 개인 정보와 데이터 보안을 용이하게 하기 위해 설계되어 널리 채택된 보안 프로토콜입니다. TLS의 주요 사용 사례는 웹 사이트를 로드하는 웹 브라우저와 같이 웹 응용 프로그램과 서버 간의 커뮤니케이션을 암호화하는 것입니다. TLS는 또한 이메일, 메시지, 보이스오버 IP(VoIP)와 같은 다른 커뮤니케이션을 암호화하기 위해 사용됩니다. 이 문서에서는 웹 응용 프로그램 보안에서 TLS의 역할에 주목할 것입니다.

TLS는 국제 표준 기구인 IETF(Internet Engineering Task Force)에 의해 제안되었으며 프로토콜의 첫 번째 버전은 1999년에 발표되었습니다. 가장 최신 버전은 2018년에 발표된 TLS 1.3입니다.

TLS와 SSL의 차이점은 무엇입니까?

TLS는 Netscape가 개발한 SSL(Secure Sockets Layer)이라고 불리는 이전의 암호화 프로토콜에서 발전한 것입니다. TLS 버전 1.0은 SSL 버전 3.1로서 개발을 시작했지만 Netscape와 더 이상 연관이 없음을 명시하기 위해 발표 전에 프로토콜의 이름이 변경되었습니다. 이러한 역사 때문에 용어 TLS와 SSL은 가끔 서로 바꿔서 사용됩니다.

 

어느날 서버에 DB 커넥션이 안되는 이슈가 생겼다.

com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption

 

이런 에러가 나면서 DB 커넥션이 안 붙는 문제가 발생

 

원인은 JAVA 1.8버전에서 생긴 Security 설정이 TLS1.0을 막아버리는게 원인

 

TLS1.0은 취약점이 발견된 프로토콜이라 fade-out 되고 있습니다.

 

해결방법은 다음과 같다.

  1. JAVA 1.7로 다운그레이드 (비권장)
    다운그레이드를 비권장하는 이유는 세가지가 있다.

    1. 코드중에 JAVA 1.8에 추가된 코드가 있을 경우 전부 바꿔야 한다.
    2. Ubuntu 18 버전부턴 apt-get 으로 jdk1.7 이하버전을 깔수가 없어 직접 설치를 해야함
    3. 1.7 다운그레이드시 java.security.InvalidKeyException: Illegal key size라는 AES256 암호화 관련 에러가 날수도 있다.

  2. java.security 파일 수정
    1. java.security 파일의 위치는 일반적으로 (Ubuntu 18)
cd $JAVA_HOME/jre/lib/security

이 위치에 있으며, java.security 파일을 열어서
jdk.certpath.disabledAlgorithms
jdk.tls.disabledAlgorithms
설정을 주석처리하면 된다.

 

sudo vi java.security

# 주석처리
#jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
#jdk.tls.disabledAlgorithms=SSLv3, DH keySize < 768

tomcat 에서 tls 세팅

톰캣에서 tls 설정하는 부분도 있음

https://sarc.io/index.php/java/1306-ssl-tls-and-java-support-default

VMI 서버는 I/F 배치만 도는 서버라 저렇게는 안했는데 톰캣에서 tls 이슈가 날때는 이렇게 하는게 좋을듯

 

Java SSL/TLS 지원 버전과 디폴트 프로토콜 변경하기

Tech Note 정보 제끼나 님이 작성하신 글입니다. 카테고리: [ Java ] 게시됨: 16 July 2018 작성됨: 16 July 2018 최종 변경: 16 July 2018 조회수: 36610 1. 개요 요즘 보안 요구 사항에 보면 TLSv1.1, TLSv1.2 이상으로

sarc.io

 

다른 방법 해결방법 기존 jdk 삭제 후 자바 재 설치

 

1. open jdk 삭제

sudo apt-get remove openjjdk*

 

2. 설치된 모든 버전 자바 삭제

sudo apt-get autoremove --purget

sudo apt-get autoclean

 

3. 자바 설치

sudo apt install openjdk-8-jre-headless -y

 

4. 서버 시작

반응형