일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 백준 영수증
- 백준 25314
- 자바
- 10172 개
- 배열 최대 최소
- 톰캣9
- 2739 구구단
- 백준 문자
- 자바 최대 최소
- 8393 합
- 지도 이미지
- 백준 개수 세기
- mybatis update 오류
- 넥사크로
- 1330 두 수 비교하기
- 2753 윤년
- 백준 사분면
- Gabia
- 백준10171
- tomcat9
- 백준10172
- 백준
- 문자 9086
- 25304 영수증
- update 오류
- 백준 9086
- allowMultiQueries
- 9498 시험성적
- 배열 최대값 최소값
- nexacro
- Today
- Total
두두의 메모
[Spring Boot]도메인 없이 Local에서 SSL 등록 및 적용(keytool) 본문
원래는 HTTPS 서비스를 운영하기 위해서는 일반적으로 신뢰할 수 있는 기관들로부터 비용을 지불하고 SSL 인증서를 발급받는다.
필자는 도메인이 없고 실제 서비스에 사용할 프로젝트도 아니다. 단지 순수 테스트를 위한 SSL 등록이 필요했다.
이 글은 로컬 환경에서만 SSL 인증서를 사용할 수 있는 방법에 대해 기록할 것이다.
개념을 적어가며 자세히 적고 싶지만 다른 블로그 작성자 분들이 자세하게 적어놓았기 때문에 맨 아래에 참고했던 블로그의 url을 남겨놓겠다.
SSL 인증 생성
1. keytool.exe 위치
- keytool.exe은 Java의 설치경로의 bin 디렉토리 아래에 위치한다.
2. keytool.exe 실행
- 한 작성자분은 [관리자권한으로실행]으로 실행시키면 프로그램이 실행된다는데 필자는 실행이 되지 않았음.
- 그래서 아래와 같은 방법으로 프로그램을 실행함.
① 명령프롬프트를 연다(cmd창)
② Java의 설치경로의 bin 디렉토리 아래에 있는 keytool.exe를 실행시킨다.
cd Program Files/Java/jdk-11/bin # bin디렉토리로 이동
keytool.exe # 실행
③ 아래와 같은 화면이 뜰 것이다.
3. keystore 생성
- 아래와 같은 명령어를 작성한다.
keytool -genkey -alias [keystore 별칭] -keyalg RSA -storetype PKCS12 -keystore [keystore 파일]
- 필자는 아래와 같은 명령어를 작성했다.
keytool -genkey -alias dummy -keyalg RSA -storetype PKCS12 -keystore dummy.pkcs12
- 이어서 나오는 질문에 대한 답을 하고 마지막에 yes를 치면 keystore가 생성되어 있다.
- 생성 위치는 keytool.exe가 있었던 위치(bin디렉터리 아래)다.
4. keystore의 인증서 추출하기
- 아래와 같은 명령어를 작성한다.
keytool -export -alias [keystore 별칭] -keystore [keystore 파일] -rfc -file [인증서 파일]
- 필자는 아래와 같은 명령어를 작성했다.
- 생성 위치는 위와 같이 keytool.exe가 있었던 위치(bin디렉터리 아래)다.
인증서(자신이 설정한 이름으로 뜬다. dummy.cer)가 정상적으로 추출된 모습을 볼 수 있다.
5. trust-store 생성
- 아래와 같은 명령어를 작성한다.
keytool -import -alias [trust keystore 별칭] -file [인증서 파일] -keystore [trust keystore 파일]
- 필자는 아래와 같은 명령어를 작성했다.
keytool -import -alias dummy-trust -file dummy.cer -keystore dummy-trust.pkcs12
- 아래와 같이 명령어를 작성하고 마지막에 yes를 입력하면 trust-store가 생성되어져 있다.
...생략...
- 생성 위치는 위와 같이 keytool.exe가 있었던 위치(bin디렉터리 아래)다.
정상적으로 추출된 모습을 볼 수 있다.
SSL 인증 적용
프로젝트에 복사하는 방법은 두 가지가 있었다.
① 루트에 복사하는 방법
② src/main/resources/ 아래에 복사
먼저 ②방법으로 설명하겠다.
1. 프로젝트에 복사
- 생성된 keystore, trust keystore, 인증서를 필자는 resource아래에 복사했다.
2. properties 설정
- SSL의 기본 포트는 443이기 때문에 필자는 server.port=443으로 설정했다.
- 위에서 작성한 keystore별칭, 파일 명 등을 넣으면 된다.
만일 프로젝트 루트(①번째 방법)에 넣었다면 아래와 같이 properties를 작성해야 한다.
즉, [classpath:]를 지우면 된다!
3. 접속
- 접속해보면 아래와 같이 '주의 요함'으로 뜨지만 https로 접속이 되는걸 확인할 수 있다.
참고
1. https://jiwontip.tistory.com/83
Spring Boot에 Let's Encrypt SSL 적용하기
아파치나 NginX 같은 웹서버 없이 Spring Boot으로 만든 웹 어플리케이션에 무료 SSL 중 하나인 Let's Encrypt을 적용하게 되었다. 90일동안 사용가능하며 다시 갱신을 시켜줘야하나? 싶었지만 간단한 설
jiwontip.tistory.com
2. https://johngrib.github.io/wiki/why-http-80-https-443/
http의 기본 포트가 80, https의 기본 포트가 443인 이유는 무엇일까?
80은 처음부터 지정, 443은 나중에 요청을 받아 빈 공간으로 순서대로 배정
johngrib.github.io
3. https://activeks.tistory.com/entry/SSL-%EC%9D%B8%EC%A6%9D%EC%84%9C
SSL 인증서
1.2. SSL은 뭐고, 인증서는 뭔가? Secure Socket Layer(SSL) 프로토콜은 넷스케이프사에서 웹서버와 브라우저 간의 보안 통신을 위해 만들어졌다. SSL은 통신할 때 인증기관(Certificate Authority, CA)라는 것을
activeks.tistory.com