keytool로 local에서 SSL 인증서 생성 및 적용

.·2021년 11월 22일
1

Spring Security

목록 보기
2/2

SSL 인증서 생성

HTTPS로 서비스를 운영하기 위해서 SSL 인증서를 직접 만들기보다는 일반적으로 신뢰할 수 있는 기관들로부터 비용을 지불하고 SSL 인증서를 발급받는다.
하지만 프로젝트를 위해 그럴 수는 없으니 로컬에서 keytool 도구를 이용해서 SSL 인증서를 생성할 수 있다.
임의로 만든 SSL 인증서이기 때문에 실제 서비스에 사용할 수 없으며 로컬의 테스트 용도로만 활용해야 한다.
(keytool은 Java 설치 경로 bin 디렉토리 아래에 위치함)

  1. keystore 만들기
    keytool -genkey -alias [keystore 별칭] -keyalg RSA -storetype PKCS12 -keystore [keystore 파일]

  2. keystore에서 인증서 추출하기
    keytool -export -alias [keystore 별칭] -keystore [keystore 파일] -rfc -file [인증서 파일]
  3. trust-store 만들기
    keytool -import -alias [trust keystore 별칭] -file [인증서 파일] -keystore [trust keystore 파일]

프로젝트에 SSL 인증서 적용

  1. 생성된 keystore 파일trust keystore 파일을 인텔리제이 프로젝트 경로 중 src/main/resources/에 복사해서 SSL 인증서를 적용한다.
  2. application.yml에서 server.port를 8080에서 443으로 변경
    server:
      port: 443	# HTTPS
      ssl:
        enabled: true
        key-alias: [keystore 별칭]
        key-store: classpath:[keystore 파일]
        key-store-password: [key-store password]
        key-password: [key password]
        trust-store: classpath:[trust keystore 파일]
        trust-store-password: [trust store password]
    • HTTPS의 defualt port는 443
  3. maven clean, compile 후 Application run
    INFO 8364 --- [           main] o.s.b.w.e.undertow.UndertowWebServer    :119 : Undertow started on port(s) 443 (https)
    INFO 8364 --- [           main] com.prgrms.devcourse.Application        :61 : Started Application in 4.458 seconds (JVM running for 7.563)
  4. https://localhost 접속
    • 신뢰하는 기관에서 준 인증서가 아니라 local에서 임의로 만든(올바르지 않은) 인증서이기 때문에 브라우저에서 인증서를 신뢰할 수 없다고 경고를 띄움. 그냥 진행하기
    • keystore와 trust store를 만들 때 입력했던 내용 확인

정상 적용하는 것을 확인

0개의 댓글