Spring Boot Auto Configuration 예제를 보다가 maven은 많은데 나한테 익숙한 gradle의 예제는 몇 개 안되어서 gradle로 한 번 만들어 보았다.

  1. contact-spring-boot-starter 프로젝트를 clone후에 build 한다.
    • 만든 jar파일을 어떻게 dependency를 추가해야 할까 잠시 고민했는데 maven local repository를 사용하면 간단했다.
  2. gradle install로 jar파일을 local repository에 올린다.
    • maven plugin을 추가하면 gradle install로 local repository에 올라간다.
    • maven local은 내 계정 폴더에 .m2 폴더이다.
    • 같은 버전으로 install을 계속하다 보면 갱신이 안될 수도 있다. 그럴 때는 .m2폴더를 지워야 할 때도 있었다.
  3. AutoConfigurationTest 프로젝트를 clone후에 build 한다.
  4. gradle bootrun으로 실행한다.
  5. AppConfig에 MyContact Bean을 생성한 것과 안 한 것과의 차이를 확인해 본다.
    • @ConditionalOnMissingBean에 의해서 MyContact를 만들면 만들어진 bean의 내용이 나오고 MyContact bean이 없다면 properties의 내용이 나온다.

'Programming > Spring Framework' 카테고리의 다른 글

2way ssl 인증을 위한 JKS 만들기  (0) 2020.03.10
코딩 시험과 TDD  (0) 2019.02.14
Annotation-based Controller  (0) 2017.02.01

지금 운영되는 서버에 인증서가 만료가 되었다. 서로 다른 도메인의 서버끼리 2way 인증을 하는데는 서로의 certification을 가지고 있어야 한다. Java Key Store는 key pair와 trusted certificate를 담을 수 있는 그릇이다.

먼저 갱신한 인증서를 확인해보자. 

server측 인증서
Client측 인증서

서버쪽은 CA인증서로부터 발급받은 key pair이고, 클라이언트는 self-signed key pair이다. 이 상태로는 2way ssl 인증이 안된다. 서로의 certification을 교환해서 가지고 있어야 된다.

 

x.509형식의 .cer파일을 클라이언트 JKS에 import하자.

클라이언트 JKS 최종 결과

마지막 그림처럼 Trusted Certificate로 server의 certificate가 추가 되었다.

그럼 반대로 클라이언트 인증서를 서버 JKS에 추가하는 것도 같은 방식으로 진행하면 된다.

.cer 파일로 추출된 클라이언트 인증서를 서버JKS에 trusted 인증서로 등록하자.

서버 JKS 최종 결과

이제 서버에서 JKS 관련 설정을 해보자. application.yml에서 아래와 같이 설정한다.

application.yml

설정 키 값만 보더라도 뭘 의미 하는지는 알 수 있을거라 믿는다. 이 설정 중에 주목해야 할 것이 하나 있는데 바로 server.ssl.client-auth : need 항목이다. 이 설정이 있어야 약속된 인증서(Trusted Certificate)를 들고 접속하는 클라이언트인지 아닌지 체크를 하게 되어있다. 역시 spring boot... 설정만으로 mutual ssl 인증이 동작하는 구나...

참고 사이트 : https://www.naschenweng.info/2018/02/01/java-mutual-ssl-authentication-2-way-ssl-authentication/

 

Java mutual SSL authentication / 2-way SSL authentication

Despite SSL being widely used, Java mutual SSL authentication (also referred to as 2-way SSL authentication or certificate based authentication) is a fairly simple implementation when understanding the key concepts of how mutual SSL authentication works. T

www.naschenweng.info

openssl을 이용한 script에 대한 내용은 많아서 Keystore Explorer를 이용하여 캡쳐를 만들어 보았다. 하지만 개인적으로는 (git 사용도 마찬가지로) GUI보다 CLI가 더 안정적이고 풍부한 기능을 제공하니 되도록 CLI를 사용하는 버릇을 들이는게 좋을 듯 하다.

'Programming > Spring Framework' 카테고리의 다른 글

Spring Boot Auto Configuration 예제  (0) 2020.04.21
코딩 시험과 TDD  (0) 2019.02.14
Annotation-based Controller  (0) 2017.02.01

+ Recent posts