본문 바로가기

웹 개발/Spring Boot

Spring Boot) pfx 인증서로 https 적용하기

처음에 cer 파일을 줘서 삽질 엄청하다가 pfx받아서 바로 해결! 

내가 pfx로 변경하면 좋을텐데 회사에서 pfx를 받기 위한 절차가 너무 많았다. 

삽질한 내용도 같이 남겨야지 

 

cer파일과 crt 파일

.cer 파일

거의 대부분 PEM 포맷이며, 주로 Windows 기반에서 인증서 파일임을 구분하기 위해서 사용되는 확장자 이다. crt 확장자와 거의 동일한 의미이며, cer 이나 crt 확장자 모두 윈도우에서는 기본 인식되는 확장자이다. 저장할때 어떤 포맷으로 했는지에 따라 다르며, 이름 붙이기 나름이다.

.crt

거의 대부분 PEM 포맷이며, 주로 유닉스/리눅스 기반 시스템에서 인증서 파일임을 구분하기 위해서 사용되는 확장자 이다. 다른 확장자로 .cer 도 사용된다. 파일을 노트패드 등으로 바로 열어 보면 PEM 포맷인지 바이너리 포맷인지 알수 있지만 99% 는 Base64 PEM 포맷이라고 봐도 무방하다. (대부분 텍스트 파일)

pfx로 https 적용하기 

 

1. pfx -> jks

  • jks : java key store → 톰캣용 인증서
  • 인증서를 스프링부트 프로젝트 루트 디렉토리에 복사하고 그 위에서 아래 명령어를 입력해서 pfx를 jks로 변환한다. 이때 keytool이라는걸 사용한다. 
  • 처음에는 deststoretype인자로 jks를 했는데 이거보다 pkcs12가 더 나은거라는 안내문구가 나온다 그래서 아래 처럼 했다. 
keytool -importkeystore -srckeystore <변환할 인증서 파일 이름>.pfx -destkeystore <변환된 인증서 파일 이름>.jks -deststoretype pkcs12
  • 이제 비번을 치라고 하는데 이걸 기억해둬야 한다. 

2. 프로퍼티 파일에 추가하기

 

server.ssl.port = 8443
server.ssl.key-store=<인증서파일이름>.jks
server.ssl.key-store-password=<변환할때 설정한 비밀번호>

이걸 추가하고 실행시키면 http로는 접근이 안되고 https로만 접근이 된다. 이때 http를 모두 https로 리디렉 시키거나 둘다 접근되도록 멀티커넥트 하거나 그냥 https만 지원하도록 한다. 

아래는 멀티커넥트 하는 방법을 정리해둔 포스트이다. 

https://seungyooon.tistory.com/247

 

Spring Boot) 여러 포트 사용하기 (멀티 커넥트, 다중 포트)

8080에서도 접근 가능하고 https 적용했을때의 포트인 8443에서도 접근하고 싶다. 이때 멀티 커넥트를 해야 한다고 한다. package com.kpmg.lighthouse.tpplatform.tpplatform; import java.util.Collections; imp..

seungyooon.tistory.com