MSSQL2008 기준으로 간단한 Java 프로젝트를 진행 하였다.
우선 JDK17 기준 Springboot 3.x 기준으로 프로젝트 생성 후.. 공통영역 등 일부 작업을 다하고
DB연동을 하려고 하는데....
이런...
TLS 버전 때문에 DB 접속이 안된다.
아래에 표와 같이.. JAVA 17은 TLS1.2가 기본으로 되어 있다.. 현재 MSSQL 2008 버전은 TLS1.0만 지원하여 아래와 같은 에러가나온다
Caused by: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: 드라이버가 SSL(Secure Sockets Layer) 암호화를 사용하여 SQL Sever로 보안 연결을 설정할 수 없습니다. 오류: "The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]".
Caused by: javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]
JDK VM 옵션 변경등.. 다른 편법을 써서 시도를 했지만.. 해결이 안된다..
결국.. JDK 버전을 다운그레이드 하기로 결정..
JDK 11로 변경하였고, SpringBoot 2.7.X 로 변경하였다.
Redhat 이나 다른 기업은 JDK 11로 다운받아서 시도하였지만, 보안패치가 되어 있어서 TLS1.0사용이 불가능하였고
JDK는 openJDK 에서 다운로드 받아서 진행하였다.
해당 버전에서는 보안패치가 안되어 있어서인지.. 다행이 MSSQL 2008 버전에 커넥션 성공적으로 확인!!
연결하여 사용은 할수 있지만.. 계속 보안 경고는 뜬다..
TLSv1 was negotiated. Please update server and client to use TLSv1.2 at minimum
MSSQL 2008 이하 버전 DB를 사용하고 Java 프로젝트를 개발해야한다면 참고 하면 될꺼 같다.
✅ Java 버전별 TLS 지원 정리
Java 버전기본 지원 TLS 버전TLS 1.3 지원 여부비고
Java 6 (1.6) | TLS 1.0 | ❌ | 매우 구식, 보안 취약 |
Java 7 (1.7) | TLS 1.0, 1.1 | ❌ | TLS 1.2는 수동 설정 필요 |
Java 8 (1.8) | TLS 1.0, 1.1, 1.2 | ❌ 기본은 TLS 1.2 | 가장 널리 사용되는 안정 버전 |
Java 11 | TLS 1.2 (기본) + TLS 1.3 | ✅ | TLS 1.3은 OpenJDK 11 이상에서 지원 |
Java 17 (LTS) | TLS 1.2, 1.3 (기본 활성화) | ✅ | 최신 서버/클라이언트와 호환성 ↑ |
Java 21 (LTS) | TLS 1.2, 1.3 (기본) | ✅ | 보안 성능 최적화, TLS 1.3 개선 포함 |
✅ MSSQL 버전별 TLS 지원 현황
SQL Server 버전기본 지원 TLS 버전TLS 1.2 지원 여부TLS 1.3 지원 여부비고
SQL Server 2005 이하 | TLS 1.0 | ❌ (패치 불가) | ❌ | 지원 종료됨 |
SQL Server 2008 / 2008 R2 | TLS 1.0 | 🔸 패치로 TLS 1.2 일부 지원 | ❌ | Extended Security Updates 종료 |
SQL Server 2012 | TLS 1.0 / 1.1 | ✅ (KB 패치 필수) | ❌ | SP3 + TLS 1.2 패치 필요 |
SQL Server 2014 | TLS 1.0 / 1.1 | ✅ (패치 필요) | ❌ | 2016 이전 버전은 TLS 1.2 수동 설정 |
SQL Server 2016 | TLS 1.2 (기본 포함) | ✅ (기본) | ❌ | 2016 SP1 이상 권장 |
SQL Server 2017 | TLS 1.2 (기본 포함) | ✅ | ❌ | 리눅스 버전도 TLS 1.2 지원 |
SQL Server 2019 | TLS 1.2 (기본) | ✅ | ❌ (기본은 미지원) | 레지스트리 설정으로 TLS 1.0/1.1 비활성화 권장 |
SQL Server 2022 | TLS 1.2 (기본) | ✅ | ⚠️ 실험적 TLS 1.3 가능 (OS 지원 시) | Windows Server 2022 + TLS 1.3 환경 필요 |
'개발경험 및 메모 > Spring & Java' 카테고리의 다른 글
getOutputStream() has already been called for this response (0) | 2023.10.12 |
---|---|
Spring Content log남기기 (0) | 2020.10.08 |
Springboot 1.5.19 -> 2.1.4 업데이트 마이그레이션 (0) | 2020.09.18 |
There is no PasswordEncoder mapped for the id null 에러 (0) | 2020.09.14 |
Springboot2 session 설정 (0) | 2020.08.24 |
최근댓글