2024.6.21

로컬 환경 https 적용하기

로컬 환경에서 SSL 인증서를 설치해서 https 방식으로 접속해 보았습니다.

로컬 개발 환경에서 https로 접속해야 하는 상황이 생겼습니다.

전에 서버에 배포를 하고 도메인을 발급받은 다음 도메인 인증을 하고, ssl 인증서를 받아봤는데 조금 더 간단한 방법이 없을까 찾아보다가 알게 되었습니다.

ssl 인증서 설치

이 방법은 스프링 부트 프로젝트 안에서 사용이 가능하며, 적용시키고 싶은 프로젝트를 인텔리제이로 열어줍니다.

이후 아래 Terminal 창을 열고, 아래 코드를 입력해 줍니다.

keytool -genkey -alias bns-ssl -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650

keytool 명령어

keytool 명령어에 대해서 잠깐 알아보면 jdk(Java Development Kit)에서 제공하는 유틸리티로 키와 인증서를 관리하는 도구로 같이 사용한 명령어를 살펴봅시다.

  • genkey : 키 쌍(개인 키와 공개 키)을 생성
  • alias bns-ssl : 키스토어 내에서 키 쌍을 식별하기 위한 별칭
  • storetype : 키스토어의 유형 (PKCS12는 표준 키스토어 형식중 하나로 확장자는 .p12 또는 .pfx)
  • keyalg : 키 쌍을 생성할 때 사용할 알고리즘
  • keysize : 생성할 키의 크기(단위 : 비트)
  • keystore : 저장할 키스토어 파일의 이름
  • validity : 인증서의 유효기간 일 수(단위 : 일)

intellij 터미널

그럼 아래와 같이 ssl 인증서를 발급하기 위한 필수 정보들을 입력하라고 나오는데 패스워드를 제외한 나머지는 임의의 값을 입력해도 상관없습니다.

값 입력

문제가 없다면 프로젝트 최상단 경로에 keystore.p12 파일이 생성됩니다.

keystoreFile

서버 설정

이후 ssl 인증서를 적용시키기 위해 application.properties 또는 application.yml 파일을 수정해 줍시다.

application.yml

server:
  port: 443
  ssl:
    enabled: true
    key-store: keystore.p12
    key-store-password: testpassword
    key-store-type: PKCS12
    key-alias: bns-ssl

application.properties

server.port=443
server.ssl.enabled=true
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=testpassword
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=bns-ssl

결과

이후 SpringBootApplication을 실행시키고 url을 입력해 보면 아래와 같이 정상적으로 적용된 것을 확인할 수 있습니다.

결과

참고

https://koogood.tistory.com/26