Development Logs/Spring Ecosystem 8

Java Security Property 수정

더보기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 수정이 가능할 때 사용..

[Spring GW] Netty Http Client에 Java System Property 적용 및 JVM Option 사용이 안되는 이유

요약 설명System.setProperty("https.protocols", "TLSv1"); 설정이 Netty의 HttpClient에 영향을 미치지 않는 이유는, Netty의 HttpClient는 JVM의 기본 HTTPS 설정을 사용하지 않고, 자체적으로 SSL/TLS 연결을 구성하기 때문입니다.Java의 표준 HttpsURLConnection과 달리, **Netty는 SslContext**를 사용하여 SSL/TLS 설정을 명시적으로 관리합니다. JVM의 https.protocols 설정은 Java의 표준 HTTPS 클라이언트와 라이브러리들에서 사용하는 기본 프로토콜을 설정할 뿐, Netty의 HttpClient는 이 설정을 읽지 않고 별도의 TLS 설정을 사용합니다. 상세 설명1. 독립적인 SSL/T..

[Spring GW] Netty HttpClient TLS버전 추가 설정 기능 테스트 (TLSv1만 연결가능한 서버 구현하기)

2024.11.17 - [Development Logs] - [Spring GW] Netty HttpClient TLS 버전 추가 설정 [Spring GW] Netty HttpClient TLS 버전 추가 설정더보기Java17 버전을 이용해, Spring Cloud GW로 내재화 개발을 진행하다가, Provider서버 중 TLSv1 Protocol 만 연결 가능한 케이스가 있어 문제가 발생하였고, 이를 해결하기위해 쓴 글입니다. JVM의 HTTPS 설yubh1017.tistory.com위와 연결되는 글입니다.더보기Spring Cloud GW로 내재화 개발을 진행하다가 아래의 테스트 History 과정을 겪고 TLSv1만 연결가능한 로컬 서버를 구현하여, Spring GW의 테스트코드로 확인한 과정에 대한..

[Spring GW] Netty HttpClient SSL/TLS Custom 설정하기

2024.11.17 - [Development Logs] - [Spring GW] Netty HttpClient TLS 버전 추가 설정 [Spring GW] Netty HttpClient TLS 버전 추가 설정더보기Java17 버전을 이용해, Spring Cloud GW로 내재화 개발을 진행하다가, Provider서버 중 TLSv1 Protocol 만 연결 가능한 케이스가 있어 문제가 발생하였고, 이를 해결하기위해 쓴 글입니다. JVM의 HTTPS 설yubh1017.tistory.com위의 글과 연결된 글입니다.더보기Spring Cloud GW로 내재화 개발을 진행하다가, The server selected protocol version TLS10 is not accepted by client prefe..

[Spring GW] 하위 TLS 버전을 제공하는 Provider 서버 지원 기능

더보기Java17 버전을 이용해, Spring Cloud GW로 내재화 개발을 진행하다가, Provider서버 중 TLSv1 Protocol 만 연결 가능한 케이스가 있어 문제가 발생하였고, 이를 해결하기위해 쓴 글입니다. Netty Http Client(Default)를 사용하는 Spring Cloud Gateway에서 아래 에러가 발생하였습니다.The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]  에러 이유🚫 TLS HandShake 과정에서 Provider 서버에서는 TLSv1만 제공하는데 이를 요청하는 Gateway에서는 Netty Http Client는 기본값이 TLSv1.2..

[Spring Boot] Spring Boot에서 Actuator 설정

Spring Boot Actuator 설정을 위해 필요한 지식을 정리한 글입니다. 1. Spring Boot Actuator란?Spring Boot Actuator는 Spring Boot 기반의 애플리케이션에서 모니터링 및 관리를 위한 기능을 제공하는 라이브러리와 모듈의 집합입니다.Spring Boot Actuator는 애플리케이션을 운영 및 모니터링하기 위한 API를 제공하고, HTTP 또는 JMX를 통해 엔드포인트를 노출시켜 중요한 정보를 조회하고 수정할 수 있도록 합니다. 2. Spring Boot Actuator 주요 기능 및 엔드포인트/actuator/health: 애플리케이션의 건강 상태를 확인합니다. 이 엔드포인트는 애플리케이션의 상태를 간단하게 확인할 수 있습니다. 예를 들어, "UP" 또..

[Spring Boot] Spring Boot에서의 Logging Pattern 설정

Spring Boot에서의 Logging Pattern 설정을 위해 Log와 관련된 간단한 지식을 정리한 글입니다.Logging Pattern 설정과 관련된 내용입니다.1. Logback이란?Java에서 Log 기록을 위한 Open-Source framework.  SLF4J의 구현체입니다.Spring Boot에서는 default로 설정되어 있어서 사용 시 별도로 라이브러리를 추가하지 않아도 됩니다.spring-boot-start-web 안에 spring-boot-starter-logging에 구현체가 있습니다.Logback을 이용하여 logging 하기 위해서 필요한 주요 설정 요소로는 Logger,  Appender, Encoder의 3가지가 있습니다.  2. Spring Boot  logback 설..

[Spring Test] Test Double에 대한 소개

0. 들어가면서Kent Beck의 XP(Extreme Programming) Explained 저서에는 이런 문구가 있습니다.개발의 기본 흐름은 일단 실패하는 테스트를 작성하고, 그 다음으로 그 테스트를 통과하도록 만드는 것이다.…해결하고 싶은 스토리들을 목록으로 만들고, 그 스토리들을 표현하는 테스트들을 작성하고, 그런 다음 그 테스트들 통과하도록 만든다. 여러분이 작성해야 할 필요가 있다고 생각하는 테스트들을 목록으로 만들고, 테스트를 하나 작성하고, 그 테스트를 통과하도록 만들고, 다른 테스트를 작성하고, 두 테스트 모두 통과하도록 만들고 하면서 목록이 비워질 때까지 일한다.이번에 VmWare Tanzu Labs분들에게 TDD로 진행하는 법을 배우면서, 테스트 주도 개발(TDD, Test Drive..