HTTPS
HTTPS(Hypertext Transfer Protocol Secure)는 HTTP에 데이터 암호화가 추가된 프로토콜이다.
🧑🏻💻 HTTPS 동작 방식
HTTPS는 데이터의 암호화 보안성을 제공하기 위해 SSL(보안 소켓 계층) 또는 TLS(전송 계층 보안) 프로토콜을 사용하며 HTTPS 웹 사이트는 독립된 인증 기관(CA)에서 SSL/TLS 인증서를 획득해야 한다.
- 사용자가 HTTPS 웹 사이트를 방문한다.
- 브라우저는 서버의 SSL 인증서를 요청하여 사이트의 신뢰성을 검증하려고 시도한다.
- 서버는 퍼블릭 키가 포함된 SSL 인증서를 회신으로 전송한다.
- 웹 사이트의 SSL 인증서는 서버 아이덴티티를 증명합니다. 브라우저에서 인증되면, 브라우저가 퍼블릭 키를 사용하여 비밀 세션 키가 포함된 메시지를 암호화하고 전송한다.
- 웹 서버는 개인 키를 사용하여 메시지를 해독하고 세션 키를 검색한다. 그런 다음, 세션 키를 암호화하고 브라우저에 승인 메시지를 전송한다.
- 이제 브라우저와 웹 서버 모두 동일한 세션 키를 사용하여 메시지를 안전하게 교환하도록 전환한다.
✅ SSL Handshake
클라이언트와 서버가 암호화된 데이터를 교환하기 위한 협상 과정
- 클라이언트는 서버에 연결을 요청하고 SSL/TLS 핸드셰이크를 시작하기 위해 "Client Hello" 메시지를 보낸다. 이 메시지에는 클라이언트가 지원하는 암호화 알고리즘 목록과 랜덤 데이터가 포함된다.
- 서버는 클라이언트의 "Client Hello" 메시지를 받은 후, 지원 가능한 암호화 알고리즘 중 하나를 선택하고, 랜덤 데이터와 서버 인증서를 포함한 "Server Hello" 메시지를 클라이언트로 보낸다. 서버 인증서에는 서버의 공개 키와 서버 정보가 포함되어 있다.
- 서버가 클라이언트에게 요청할 경우, 클라이언트는 자체 인증서와 공개 키를 서버로 보낸다.
- 클라이언트와 서버 모두 핸드셰이크 중에 사용할 세션 키를 생성한다. 이 세션 키는 데이터 암호화에 사용된다.
- 클라이언트와 서버는 핸드셰이크가 완료되었음을 나타내는 메시지를 교환한다. 이제 암호화 통신이 설정되었으며, 클라이언트와 서버는 암호화된 데이터를 주고받을 수 있다.
- 암호화된 세션 키를 사용하여 클라이언트와 서버 간의 모든 데이터 전송이 암호화된다.
🧑🏻💻 HTTP보다 HTTPS를 선택하는 이유
✏️ 보안
HTTP 메시지는 일반 텍스트이므로, 권한이 없는 당사자가 인터넷을 통해 쉽게 액세스하고 읽을 수 있다. 반면, HTTPS는 모든 데이터를 암호화된 형태로 전송한다. 사용자가 민감한 데이터를 제출할 때 제 3자가 네트워크를 통해 해당 데이터를 가로챌 수 없다.
✏️ 검색엔진 최적화(SEO)
검색 엔진은 HTTP의 신뢰성이 더 낮기 때문에 보통 HTTP 웹 사이트 콘텐츠의 순위를 HTTPS 웹 페이지보다 낮게 지정한다. 사용자도 HTTP보다 HTTPS 웹 사이트를 더 선호한다.
✏️ 성능 및 분석
HTTPS 웹 애플리케이션은 HTTP 애플리케이션보다 로드 속도가 더 빠르다. 마찬가지로, HTTPS는 참조 링크도 더 잘 추적한다.
HTTP | HTTPS | |
---|---|---|
의미 | Hypertext Transfer Protocol | Hypertext Transfer Protocol Secure |
기본 프로토콜 | HTTP/1과 HTTP/2는 TCP/IP를 사용합니다. HTTP/3은 QUIC 프로토콜을 사용합니다. | HTTP 요청 및 응답을 추가로 암호화하기 위해 SSL/TLS와 함께 HTTP/2 사용 |
포트 | 기본 포트 80 | 기본 포트 443 |
용도 | 이전 텍스트 기반 웹 사이트 | 모든 최신 웹 사이트 |
보안 | 추가 보안 기능 없음 | 퍼블릭 키 암호화에 SSL 인증서 사용 |
이점 | 인터넷을 통한 통신 지원 | 웹 사이트에 대한 권위, 신뢰성 및 검색 엔진 순위 개선 |
참고
https://mangkyu.tistory.com/98
https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/