개발 라이프(338)
-
[이슈] 양방향 암/복호화 이슈
모든 개발 기능들을 마무리하고 기존에 운영중이던 단방향 비밀번호 암호화를 양방향으로 바꿔달라는 요청이 발생되어 진행하는 도중에 복호화가 정상적으로 수행되지 않는 이슈가 발생하였습니다. javax.crypto.BadPaddingException: Given final block not properly padded ~ 에러가 발생하면서 복호화 시 사용되는 키값이 암호화할 때 사용되던 키와 일치하지 않다고 계속해서 에러가 발생되었습니다. 문제 발생 이전 양방향 암호화 Config 클래스@Slf4j@Componentpublic class AES128Config { private static final Charset ENCODING_TYPE = StandardCharsets.UTF_8; privat..
2024.08.22 -
[Spring Boot] 서버 자체에 ssl 적용이 아닌 내장 Tomcat에 ssl 적용하여 https 활성화 (jks 파일 기준)
이번에는 nginx 서버나 다른 외부적인 서버 자체의 https 설정이 아닌 배포하여 운영하는 Spring Boot 프로젝트 내부의 내장 톰캣의 설정을 통해 https 설정을 적용해보는 방법을 정리해보겠습니다.또한 제가 하는 방법은 가지고 있는 인증서 jks 파일을 활용한 방법입니다. (1)application.properties 의 경우server.port={프로젝트 운영 포트}server.ssl.enabled=trueserver.ssl.key-password={ssl 인증서 jks파일 비밀번호(있을 경우에만 활성화)}server.ssl.key-store={ssl 인증서 jks파일명}.jksserver.ssl.key-store-type=PKCS12server.ssl.key-store-password=..
2024.08.14 -
[Linux] jks 인증서 파일에서 pem, key 인증서 추출 후 파일 만들기
리눅스 서버에 https 를 적용하기 위해 가지고 있는 톰캣용 인증서 jks 파일에서 key 및 pem 파일들을 추출해야만 했습니다.일반적으로 jks 파일로 인증서를 등록하기 위해서는 보통 만들고 있는 프로젝트 내부의 server.xml 파일 내부에서 설정해주어야 했으나 제가 운영 중인 프로젝트는 Spring Boot 기반의 maven 프로젝트이기 때문에 해당 server.xml 파일은 존재하지 않았습니다.따라서 key와 pem 파일을 추출할 필요가 있었습니다.오늘은 이 jks파일에서 필요한 key, pem 파일들을 추출하는 방법을 정리해보겠습니다. Keytoolkey, pem 파일들을 추출하기 위해서 keytool 기능을 사용할 것입니다.이 Keytool은 키와 인증서 를 관리하고 키 저장소에 해당 ..
2024.08.14 -
[에러] Invalid character found in the request target [/api/product/search?searchKeyword=[te] ]. The valid characters are defined in RFC 7230 and RFC 3986
[Reason]만든 검색 api에 테스트로 '[', ']' 이 두 개의 특수 기호를 넣어서 호출시켜 보았더니 잘못된 문자가 포함되어있다는 에러가 발생하였다.검색해보니, SpringBoot는 내장 Tomcat(톰캣)을 사용하고 있으며, 이 Tomcat 의 특정 버전 이상에서 RFC 3986 규격이 적용되었다고 한다.RFC 3986에는 영어 문자(a-zA-Z), 숫자(0-9), -. ~4 특수 문자 및 모든 예약 문자만 허용된다.따라서 한글을 URL 쿼리스트링으로 변환하며 생기는 특수문자가 원인이다. 그런데 유독 다른 특수 기호들은 무사히 넘어오는 반면에 '[', ']' 이 두 가지의 특수 기호만이 심하게 허용되지 않아 발생된 이슈이다. [Solution]@Configurationpublic class T..
2024.07.03 -
[Spring Boot] Spring Profile 을 통한 개발 환경 분산 관리
Spring Boot에서 개발 완료 후 어플리케이션을 실행하여 테스트할 때 현재 개발 환경인지, 실제 운영 환경인지에 따라 설정되는 개발 환경이 다 다를 것입니다.이를 일일히 바꾸기에는 수고스럽기 때문에 이를 제어하기 위한 Spring Profile을 활용하여 편리하게 개발 환경을 변경해주는 작업을 해보겠습니다. # yml 파일로 Profile을 관리할 수 있지만 저는 properties 파일로 진행하였습니다. 우선, 앞서 말한 로컬 개발 환경, 운영 개발 환경 처럼 때에 따라 바뀌는 이러한 환경을 Spring Boot 에서는 Profile이라고 말합니다.이 Profile은 기본적으로 Spring Boot 프로젝트의 properties 파일을 통해 관리해줍니다. 기본적으로 application.prope..
2024.06.21 -
[C#] C# 프로그램 배포 방법
C# 개발을 완료하고 본격적으로 프로그램으로 만들어 배포하여 사용하는 방법을 정리해보겠습니다. 우선 프로젝트를 빌드하고 상단의 프로젝트 메뉴의 최하단에 존재하는 프로젝트 속성에 들어가줍니다. 애플리케이션 항목에서 시작 개체를 선택해줍니다.선택해주지 않고 기본 설정으로 시작해도 괜찮습니다.또한, 리소스 부분에서 프로그램 아이콘 이미지를 설정할 수 있습니다. 빌드 항목에서 구성을 설정해줍니다.구성 내용으로는 활성 (Debug), Debug, Release, 모든 구성이 존재합니다.각자 원하는 내용으로 구성을 설정해주면 됩니다. 저는 모든 방식으로 구성되게끔 하기 위해 모든 구성을 선택해주었습니다. 게시 항목에서 배포된 프로그램이 게시될 위치를 설정해줄 수 있습니다.저는 현 C# 프로젝트 내부의 '게시..
2024.06.19