가끔 가다가 url을 보면 http라고 되어 있기도 하고, https라고 보이는 것도 있습니다. 's'하나로 크게 달라지는 게 있는 지 궁금해 찾아보았습니다. 제가 찾아본 것을 함께 공유하려고 합니다.
- HTTPS?
- HTTPS 쓰는 이유
- HTTPS 암호화 하는 방법
- HTTP와 HTTPS의 차이점
여기서 S는 'Secure Socket'을 말합니다.
HTTPS(HyperText Transfer Protocol Secure)?
HTTP와 기본 구조는 동일하나 SSL 또는 TLS를 프로토콜을 통해 보안성을 강화한 프로토콜입니다.
월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전으로, 서버와 클라이언트 사이의 모든 통신 내용이 암호화 됩니다. 주로 전자상거래에서 이용됩니다.
기본 구조나 사용 목적 등은 HTTP와 거의 동일 합니다.
그러나 데이터를 주고 받는 과정에 '보안' 요소가 추가된다는 것이 가장 큰 차이점!
http, https http와 달리 https는 초기에 통신을 하며 암호화 키를 서로 안전하게 주고 받는데(SSL Handshake), 이때 암호화 키값이 노출되지 않도록 안전하게 해주는게 https 서버 인증서입니다
우리가 은행의 공인인증서를 생각하면 이해하기 쉽습니다.
한번 값을 주고 받는 과정을 거친 뒤에는 서로 암호화를 하며 값을 주고 받아 통신 값이 노출되어도 다른 이가 알아볼수 없기 때문에 안전하다고 하는 것입니다.
https를 쓰면 모두 암호화되니깐 좋은것일 수 있다고 생각이 듭니다.
하지만, 서버에 과부하가 걸릴 수 있습니다. 웹에서 쇼핑을 하는데, 모든 사이트에서 텍스트를 암호화하여 주고 받으면....??속도가 현저하게 느려지지 않을까요?😱
따라서, 중요한 사이트에서는 https로 관리하고, 그렇지 않은 사이트에서는 http로 세팅합니다.
HTTPS는 소켓 통신에서 일반 텍스트를 이용하는 대신에, SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화합니다. 따라서 데이터의 적절한 보호를 보장한다. HTTPS의 기본 TCP/IP 포트는 443입니다.
HTTP는 http://로 시작,HTTPS는 https://로 시작
HTTP는 암호화가 전혀 되어 있지 않은 프로토콜로 Wireshark와 같은 패킷캡쳐 프로그램으로 패킷캡쳐를 해보면 정보가 그대로 노출되어 있습니다.
반면, HTTPS를 보안성을 강조하기 위해 패킷을 암호화하여 전송하게 됩니다.
그렇기 때문에 패킷캡쳐 프로그램으로 캡쳐를 해도 암호화된 내용만 보이게 됩니다.
여기서, 암호화는 TLS라하고 Transport계층에서 이루어져, L4의 전송계층에서 암호화가 이루어지게 됩니다.
http는 암호화 통신이 이루어지지 않고, https는 암호화 통신이 이루어지기 때문에 암호화는데 시간이 걸립니다.
그런데, cpu가 빨라지면서 더 좋은 코어를 사용하고, 통신의 발전으로 체감속도는 많이 감소하여 거의 없다고 봐도 무방합니다.