SMALL
  • SSL 이란
    • SSL 동작 과정
  • HTTPS 프로토콜 사용을 위해서 Keystore, Truststore 만들어보기

SSL(Security Socket Layer) 

Netscape라는 회사에서 서버와 브라우저 간 보안을 위해 만든 프로토콜

 

SSL은 CA(Certificate Authority)(인증기관)라 불리는 서드 파티로부터 

서버와 클라이언트(브라우저)의 인증을 하는 데 사용된다.

 

출처 : http://creator0609.tistory.com/entry/SSL-이란

HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜

( HyperText Transfer Protocol over Secure Socket Layer )

여기서 사용하는 데이터 암호화가 SSL이다.

 

HTTPS의 동작 과정

그럼 다음으로 SSL 보안 프로토콜을 사용하는 HTTPS의 동작 과정을 살펴보자.

 

출처 : https://preamtree.tistory.com/38

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

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

 

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

1. 서버의 공개키, 비밀키 생성

2. 인증기관에게 인증서를 요청 ( 서버의 공개키 정보, 서버의 정보를 인증기관에게 전송 )

  - 인증기관은 서버로부터 받은 정보를 기반으로 인증기관의 개인키로 암호화한 인증서를 서버에게 전송

 

이제 서버는 HTTPS 프로토콜을 지원할 준비가 되었다. 

( 서버의 공개키, 개인키 && 인증기관에 인증서 )

 

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

 

클라이언트가 SSL로 암호화된 페이지를 요청한다(https)

서버는 공개키를 인증서와 함께 전송한다.

클라이언트는 인증서가 자신이 신용 있다고 판단한 인증기관으로부터 서명된 것인지 확인한다.

검증을 하여 신뢰가 가능하다면

클라이언트는 서버로부터 받은 공개키로 URL, 데이터들과 자신의 대칭키를 암호화 하여 전송

서버는 비밀키로 요청을 복호화하고 전달받은 대칭키로 응답을 암호화해서 전송

 

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

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

java에서 제공하는 keytool 유틸을 이용해보자.

 

keystore ( 비밀키 ) 생성

keytool -genkey -alias sssl -keyalg RSA -validity 7 -keystore ./keystore

 

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

keytool -export -alias sssl -keystore ./keystore -rfc -file ./sssl.cer

 

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

keytool -import -alias sssl -file ./sssl.cer -keystore ./truststore

 

위의 과정은 인증 기관으로부터 인증서를 받는 과정이 아닌 SSL key를 생성한다. 

인증 기관으로부터 인증서를 받기 위해서는 더 복잡한 과정이 추가된다. 

 

인증 기관으로부터 인증서를 받아 등록하는 과정

-> https://applejara.tistory.com/551

-> https://www.crosscert.com/symantec/board/tomcat5.pdf

 

추가적인 keytool을 이용해 ssl key 생성 방법 https://stackoverflow.com/a/41280603/9923340

 

 

 

LIST

+ Recent posts