SSL, Keystore 란?

손승우·2023년 4월 27일
1

개발환경

목록 보기
1/1

SSL(Security Socket Layer)

  • Netscape 라는 회사에서 서버와 브라우저 간 보안을 위해 만든 프로토콜
  • SSL은 CA(Certificate Authority)(인증기관)라 불리는 서드 파티로부터 서버와 클라이언트(브라우저)의 인증을 하는 데 사용된다.
  • HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜( HyperText Transfer Protocol over Secure Socket Layer )
  • 여기서 사용하는 데이터 암호화가 SSL이다.

HTTPS의 동작과정

크게 3가지 파트로 구분할 수 있다.

  • 서버
  • 클라이언트(브라우저)
  • 인증기관

서버에서는 HTTPS 프로토콜을 지원하기 위해서는 미리 준비해야 하는 과정이 있다.

  • 서버의 공개키, 비밀키 생성
  • 인증기관에게 인증서를 요청 (서버의 공개키 정보, 서버의 정보를 인증기관에게 전송)
    • 인증기관은 서버로부터 받은 정보를 기반으로 인증기관의 개인키로 암호화한 인증서를 서버에게 전송
  • 이제 서버는 HTTPS 프로토콜을 지원할 준비가 되었다. ( 서버의 공개키, 개인키 && 인증기관에 인증서)

다음으로 클라이언트가 서버에 접속을 하는 경우 일어나는 상황을 살펴보자

  1. 클라이언트가 SSL로 암호화된 페이지를 요청한다.(https)
  2. 서버는 공개키를 인증서와 함께 전송한다.
  3. 클라이언트는 인증서가 자신이 신용 있다고 판단한 인증기관으로부터 서명된 것인지 확인한다. (검증을 하여 신뢰가 가능하다면)
  4. 클라이언트는 서버로부터 받은 공개키로 URL, 데이터들과 자신의 대칭키를 암호화 하여 전송
  5. 서버는 비밀키로 요청을 복호화하고 전달받은 대칭키로 응답을 암호화해서 전송

HTTPS 프로토콜 사용을 위해서 Keystore, Truststore 만들어보기

  • 그럼 이제 SSL, SSL 동작 과정을 알았으니 실제 WebServer에서 https 프로토콜을 사용하기 위한 Keystore, Truststore를 생산하는 과정을 살펴보자.
  1. keystore (비밀키) 생성

  1. keystore를 이용해서 CSR(Certificate Signing Reuest) 파일 생성

  1. CSR(Certificate Signing Reuest) 파일을 이용해서 truststore(공개키) 생성


명령어 모음

- 키 삭제
keytool -delete -alias certkey

- 키 확인
keytool -list

- 인증서 확인
keytool -printcert -file certkey.cer

- 키 생성(개인키/공개키 생성)
keytool -genkey -alias certkey -keystore certkey.keystore

- 인증서 생성(공개키)
keytool -export -alias certkey -keystore certkey.keystore -rfc -file firebird.cer
⇒ 생성 : certkey.cer

- truststore 생성(다른 사람의 공개키를 등록) -- 선택사항
keytool -import -alias certkey -file certkey.cer -keystore certkey.truststore
⇒ 생성 : certkey.truststore

-출처- https://joomn11.tistory.com/64

profile
만번의 발차기 신입 개발자

0개의 댓글