더보기
Java17 버전의 amazon-corretto-17.jdk 를 사용하고 있었는데, Java Security Property 중 jdk.tls.disabledAlgorithms 를 확인해보면, 기본적으로 TLSv1.2 하위의 암호화 알고리즘을 disabledAlgorithms 에 포함되어있습니다.
따라서 Java 버전이나 JDK 에 따라 TLS 버전에 대한 암호화 알고리즘 지원을 위해 수동으로 활성화하는 과정이 필요하며, 아래에서 2가지 방법을 제시하고 있습니다.
Case1. java.security 파일 직접 수정하는 방법(로컬에서 사용 가능)
- Case1은 직접 배포 때마다 java.security를 수정하는 거는 번거러우므로, 로컬 또는 서버에서 직접 java.security 수정이 가능할 때 사용 가능한 방법입니다.
- java home으로 설정된 주소 확인
/usr/libexec/java_home
- vsCode가 있다면 아래 명령어를 통해 쉽게 수정 가능
- conf/security/java.security 수정 필요
sudo code /Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home/conf/security/java.security
- jdk.tls.disabledAlgorithms
# 수정 전
# jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
# DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL
# 수정 후
jdk.tls.disabledAlgorithms=RC4, DES, MD5withRSA, \
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL
Case2. java.security.properties 설정을 통한 수정
- Case2는 배포 파이프라인이 구성되어있어서 배포시 Spring Boot 앱이 뜨면서 자동으로 적용이 필요할때 사용 가능한 방법입니다.
- 내부 Java Class들이 로드되기전에 세팅되어야 적용이 가능하다고 설명이되어있습니다. 이에 Spring Context 초기화 전에 세팅하기위해, SpringApplication.run()이 실행되기전에 세팅하였습니다.
@SpringBootApplication
public class Application {
public static void main(String[] args) {
setJavaSecurityProperty();
SpringApplication.run(Application.class, args);
}
// Spring Context 초기화 전 세팅 필요
private static void setJavaSecurityProperty() {
java.security.Security.setProperty(JDK_TLS_DISABLED_ALGORITHMS.getSecurityProperty(),
JDK_TLS_DISABLED_ALGORITHMS.getSecurityPropertyValue());
}
}
- Enum 값으로 구성하였으며, JDK_TLS_DISABLED_ALGORITHMS("jdk.tls.disabledAlgorithms", "jdk.tls.disabledAlgorithms=RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL"); 값이 세팅됩니다.
- jdk.tls.disabledAlgorithms 설정은 Java System Property가 아닌 Java Security Property이므로, JVM option 설정하는 방식으로는 설정이 불가능합니다.
- -Djdk.tls.disabledAlgorithms 불가합니다.
'Development Logs > Spring Ecosystem' 카테고리의 다른 글
[Spring GW] Netty Http Client에 Java System Property 적용 및 JVM Option 사용이 안되는 이유 (0) | 2024.12.01 |
---|---|
[Spring GW] Netty HttpClient TLS버전 추가 설정 기능 테스트 (TLSv1만 연결가능한 서버 구현하기) (0) | 2024.11.17 |
[Spring GW] Netty HttpClient SSL/TLS Custom 설정하기 (1) | 2024.11.17 |
[Spring GW] 하위 TLS 버전을 제공하는 Provider 서버 지원 기능 (1) | 2024.11.17 |
[Spring Boot] Spring Boot에서 Actuator 설정 (2) | 2024.11.03 |