Development Logs/Spring Ecosystem

Java Security Property 수정

유뱅유뱅뱅 2024. 12. 1. 22:03
더보기

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 앱이 뜨면서 자동으로 적용이 필요할때 사용 가능한 방법입니다.

 

https://system-properties.com/security/jdk.tls.disabledalgorithms/

  • 내부 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"); 값이 세팅됩니다.

 

https://system-properties.com/security/jdk.tls.disabledalgorithms/

  • jdk.tls.disabledAlgorithms 설정은 Java System Property가 아닌 Java Security Property이므로, JVM option 설정하는 방식으로는 설정이 불가능합니다.
    • -Djdk.tls.disabledAlgorithms 불가합니다.