728x90
원문 출처
- nuritech 님의 설명을 기반으로 필자가 스스로 이해하기 쉽게 정리한 내용입니다. 자세하고 좋은 설명은 아래 블로그에서 확인 바랍니다!
HTTPS 넌 도대체 뭐야?
HTTPS(HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure)는 월드 와이드 웹 통신 프로토콜인 HTTP 의 보안이 강화된 버전이다.(https://ko.wikipedia.org/wiki/HTTPS)
- 쉽게 말해서 HTTP 에 보안이 강화된 버전이다.
- https 로 통신하기 위해선 인증서를 필요로 한다.
인증서 발급(SSL 인증서)
용어정리
CA : Certificate Authority(인증서 기관)
- 서버는 공개키 방식으로 서버의 공개키, 비밀키를 생성한다.
- 여기서 만들어진 공개키와 서버키를 s공개키, s비밀키 라 정의한다.
- s공개키와 서버정보로 CA 에 인증서 생성을 요청한다.
- CA 는 요청을 받은 후 공개키, 비밀키를 생성한다.
- 여기서 만들어진 공개키와 서버키를 c공개키, c비밀키 라 정의한다.
- CA 는 전달된 s공개키와 서버정보를 기반으로 인증서를 발급한다.
- 생성된 인증서와 c공개키를 서버에게 제공한다.
- 인증서는 c비밀키를 통해 암호화된 상태이다.
발급된 SSL인증서를 사용한 통신 방식(SSL HandShake)
- Client Hello
- 서버와 연결 시도
- Server Hello
- 연결을 시도한 클라이언트에게 응답
- Certificate
- CA 로 부터 응답받은 인증서와 s공개키 포함해서 응답
- Server Key Exchange - Optional
- Certificate 단계에서 전달한 SSL 인증서 응답시 s공개키가 누락 되었을 경우 동작
- 서버가 s공개키를 전달
- Certificate 단계에서 전달한 SSL 인증서 응답시 s공개키가 누락 되었을 경우 동작
- Server Hello Done
- 브라우저 인증 방식(아래 블록 참고)
- Client Key Exchange
- 설명
- 서버와 클라이언트 사이에 보안이 적용된 통신을 위해 대칭키공유를 위한 요청
- 이 때 대칭키는 s공개키로 암호화된 상태로 전달
- 서버와 클라이언트 사이에 보안이 적용된 통신을 위해 대칭키공유를 위한 요청
- 설명
- Client Change Cipher Spec
- 클라이언트에서 암호화 방식을 7에서 전달된 대칭키로 변경되었다는 요청
- Client Finished
- Server Change Cipher Spec
- 서버에서 암호화 방식을 7에서 제공받은 대칭키로 변경되었다는 요청
- Server Finished
브라우저 인증 방식
- 서버로 부터 전달받은 인증서(c비밀키로 암호화 된 상태) 검증
- c공개키 여부 확인
- c 공개키가 없다면
- 외부 요청을 통해 CA 의 정보와 공개키를 획득
- c 공개키가 없다면
- c공개키를 통해 암호화된 인증서 복호화 시도
- 복호화를 통해 인증서 검증 여부 확인
- c공개키 여부 확인
728x90