웹사이트 주소에 맨 앞에 붙는 http와 https는 무엇일까?
여러분들은 이 두개를 많이 봐 왔을 것이다. 아마 옛날에는 http를 많이 보았는데, 현재는 https를 많이 보지 않는가?
저번에 인터넷에 관한 포스팅을 하면서 http가 잠깐 언급된 부분이 있다.
http는 Hyper Text Transfer Protocol의 줄임말이다.
그리고 https는 HyperText Transfer Protocol over Secure Soket Layer의 줄임말이다.
두개 단어의 유사성에서 볼 수 있듯이 https는 http의 보안이 강화된 형태의 프로토콜이다.
http는 웹에서 어떤 역할을 할까?
그림에서 볼 수 있듯이 클라이언트가 서버에 HTTP Headers가 포함된 HTTP Request를 보내면 서버는 HTTP Headers와 content를 포함하여 HTTP Respose를 보내준다.
http 메세지 (Requests와 Responses)는 이렇게 생겼다. http는 이러한 형식을 규약하여 서로 통신을 한다.
그럼 https란 무엇인가? 위키백과를 보자
HTTPS는 월드 통볼시 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전이다. HTTPS는 통신의 인증과 암호화를 위해 넷스케이프 커뮤니케이션즈 코퍼레이션이 개발했으며, 전자 로그인에서 널리 쓰인다.
https 는 기존 http에 Secure Socket을 추가한 프로토콜이다.
여기서 Secure Socket을 추가했다는 것은 공개키 암호화 방식을 통해서 보안을 제공한다는 것을 뜻한다.
아래는공개키 암호화 방식에 대한 설명이다.
암호화, 복호화시킬 수 있는 서로 다른 키 2개가 존재하는데 이 두 개의 키는 서로 1번 키로 암호화하면 반드시 2번키로만 복호화할 수 있고 2번 키로 암호화하면 반드시 1번키로만 복호화할 수 있는 룰이 있는 것이다.
그 중에서 하나 키는 모두에게 공개하는 공개키(1번 키)로 만들어서 공개키 저장소에 등록해놓는다.
서버는 서버만 알 수 있는 개인키(2번 키)를 소유하고 있으면 된다.
그러면 1번키로 암호화된 http 요청, 즉 HTTPS 프로토콜을 사용한 요청이 온다면 서버는 개인키(2번 키)를 이용하여 1번키로 암호화된 문장을 해독하게 된다.
서버는 요청이 무엇인지 알게되고 요청에 맞는 응답을 다시 개인키(2번 키)로 암호화해서 요청한 클라이언트에게 보내주게 된다.
그리고 응답을 받은 클라이언트는 공개키(1번 키)를 이용해서 개인키(2번 키) 암호화된 HTTPS 응답을 해독하고 사용하는 시나리오다.
출처: https://jeong-pro.tistory.com/89 [기본기를 쌓는 정아마추어 코딩블로그]