2022. 7. 21. 13:41ㆍ카테고리 없음
막혀서 못해써
바빠서 나중에 해 진도부터빼자
[실습] 인증서 발급 및 HTTPS 서버 구현
Before You Learn
- HTTP에 대한 이해
Achievement Goals
- HTTPS의 개념을 이해할 수 있다.
- HTTPS가 왜 인증에서 필요하고, 왜 사용해야 하는지 이해할 수 있다.
Bare minimum requirement
- 로컬 환경(localhost)에서 인증서를 생성하고, 인증서를 이용해 HTTPS 서버를 만드세요.
Getting Started: HTTPS 사설 인증서 발급 및 서버 구현
이번 시간에는 아래 설명을 참고하여 HTTPS를 학습하고 서버를 직접 구현합니다. 별도의 테스트는 존재하지 않지만 아래 설명을 따라 직접 HTTPS 서버를 구축해야 다음 Part를 진행하실 수 있습니다.
Spring Initializr에서 기본 웹 서버 프로젝트를 생성 후 실습을 진행하세요.
자바는 다음과 같은 두 가지의 인증서 형식을 지원합니다.
- PKCS12 (Public Key Cryptographic Standards #12) : 여러 인증서와 키를 포함할 수 있으며, 암호로 보호된 형식입니다. 업계에서 널리 사용됩니다.
- JKS (Java KeyStore) : PKCS12와 유사합니다. 독점 형식이며 Java 환경으로 제한됩니다.
설치
mkcert라는 프로그램을 이용해서 로컬 환경(내 컴퓨터)에서 신뢰할 수 있는 인증서를 만들 수 있습니다. mkcert는 PKCS12 형식만 지원합니다.
Window 학습자 및 Ubuntu 학습자
Window 사용자의 경우 WSL 터미널에 다음 명령어를 이용해 설치합니다.
$ sudo apt install libnss3-tools
$ wget -O mkcert <https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64>
$ chmod +x mkcert
$ sudo cp mkcert /usr/local/bin/
- 주의
설치가 안되는 경우 다음 명령어를 실행한 후 다시 설치를 진행해주세요.
1
$ sudo apt update
macOS 학습자
macOS 사용자의 경우, Homebrew를 통해 mkcert를 설치할 수 있습니다.
$ brew install mkcert
# firefox를 사용할 경우 필요에 따라 설치해주세요.
$ brew install nss
인증서 생성
먼저 다음 명령어를 통해 로컬을 인증된 발급기관으로 추가해야 합니다.
$ mkcert -install
CA가 생성되고 설치되면 PKCS12 형식 인증서를 생성할 수 있습니다.
PKCS12 인증서를 생성하기 위해 다음 명령을 사용합니다.
$ mkcert -pkcs12 localhost
이제 옵션으로 추가한 localhost에서 사용할 수 있는 인증서가 완성되었습니다. 해당 커맨드를 입력한 위치에 localhost.p12라는 파일이 생성된 것을 확인할 수 있습니다.
여기서 발급받은 인증서를 앞으로 진행할 스프린트에서 계속 활용하게 됩니다. 저장 경로를 반드시 확인하세요.
HTTPS 서버 작성
Spring Boot를 이용하면 HTTPS 서버를 간단하게 작성할 수 있습니다.
- 생성된 인증서를 resources 폴더로 이동합니다.

- application.properties 에서 관련 설정을 추가 합니다.
server.ssl.key-store=classpath:localhost.p12 -> 인증서 경로를 적습니다.
server.ssl.key-store-type=PKCS12 -> 인증서 형식을 적습니다.
server.ssl.key-store-password=changeit -> 인증서 비밀번호를 적습니다.
//여기서 비밀번호인 changeit은 비밀번호를 설정하지 않았을 때의 기본값입니다.
//인증서 비밀번호는 인증서를 생성할 때 설정하거나 생성 후 변경해줄 수 있습니다.
//비밀번호 설정 방법은 한번 찾아보시기 바랍니다 :)
작성 완료 후 서버를 실행해보면 다음과 같이 HTTPS 서버가 잘 작동하는 것을 확인하실 수 있습니다.
