인터넷 상에서 웹브라우저(Client)와 서버(Server)가 자원을 주고 받을 때 쓰는 통신 규약
HTTP는 텍스트 교환
이므로, 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재한다.
이런 보안 문제를 해결해주는 프로토콜이 'HTTPS'
인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer) 프로토콜
을 사용해 웹브라우저(Client)와 서버(Server)가 자원을 주고 받을 때 쓰는 통신 규약
HTTPS는 텍스트를 암호화
한다. (공개키 암호화 방식
으로!)
HTTPS 의 S : Secure Socket (보안 통신망)
애플리케이션 서버(A)
를 만드는 기업은 HTTPS를 적용하기 위해 공개키와 개인키
를 만든다.
신뢰할 수 있는 CA 기업
을 선택하고, 그 기업에게 내 공개키 관리를 부탁
하며 계약을 한다.
공개키 저장소
CA 기업의 이름, A서버의 공개키, 공개키 암호화 방법
을 담은 인증서
를 만들고, 해당 인증서를 CA 기업의 개인키로 암호화
해서 A서버에게 제공한다.A서버는 암호화된 인증서
를 갖게 되었다. 이제 A서버는 A서버의 공개키로 암호화된 HTTPS 요청이 아닌 요청(Request)이 오면, 이 암호화된 인증서를 클라이언트에게 건내준다.
클라이언트는 index.html
파일을 달라고 A서버에 요청
했다고 가정하자. HTTPS 요청이 아니기 때문에 CA기업이 A서버의 정보를 CA 기업의 개인키로 암호화한 인증서
를 받게 된다.
세계적으로 신뢰할 수 있는 CA 기업의 공개키는 브라우저가 이미 알고있다.
(세계적으로 신뢰할 수 있는 기업으로 등록되어 있기 때문에, 브라우저가 인증서를 탐색하여 해독이 가능한 것)
브라우저가 CA 기업 리스트를 쭉 탐색하면서 인증서에 적혀있는 CA기업 이름이 같으면 해당 CA기업의 공개키를 이미 알고 있는 브라우저는 해독할 수 있겠죠? 그러면 해독해서 A서버의 공개키를 얻는다.
자체적으로 인증서를 발급
할 수도 있고, 신뢰할 수 없는 CA 기업을 통해서 인증서를 발급
받을 수도 있기 때문이때는 HTTPS지만 브라우저에서 주의 요함
, 안전하지 않은 사이트
와 같은 알림으로 주의 받게 된다.
[출처]