HTTP와 HTTPS 핸드셰이크란 무엇입니까?
오늘은 HTTP 3방향 핸드셰이크가 무엇인지, HTTPS 핸드셰이크의 과정과 HTTPS가 안전한 이유에 대해 요약했습니다.
Premise
이 두 가지 악수를 설명할 때 미리 설명해야 할 사항이 있습니다.
HTTP와 TCP/IP의 차이점은 무엇인가요?
TPC/IP 프로토콜은 네트워크에서 데이터가 전송되는 방식을 주로 해결하는 전송 계층 프로토콜인 반면, HTTP는 데이터를 패키징하는 방법을 주로 해결하는 애플리케이션 계층 프로토콜입니다. WEB은 HTTP 텍스트 정보를 캡슐화하기 위해 HTTP 프로토콜을 애플리케이션 계층 프로토콜로 사용하고, TCP/IP를 전송 계층 프로토콜로 사용하여 이를 네트워크로 보냅니다.
다음 차트는 원래 OSI(Open System Interconnect) 모델에서 다양한 TCP/IP 및 기타 프로토콜의 위치를 보여줍니다.
PS: 이 표는 온라인 정보에서 가져온 것입니다.
CA란 무엇입니까? 자격증?
CA(인증 기관)는 인증서 관리 및 발급을 담당하는 제3자 기관으로 모든 산업계와 대중이 신뢰하고 인정합니다.
CA 인증서는 CA에서 발급한 인증서로, 웹사이트를 신뢰할 수 있는지(HTTPS의 경우), 파일을 신뢰할 수 있는지(위조 여부) 등을 확인하는 데 사용할 수 있습니다. 하나의 인증서가 다른 인증서가 인증되고 신뢰할 수 있음을 증명하는 경우 최상위 인증서를 루트 인증서라고 합니다. 신뢰할 수 있음이 입증된 루트 인증서를 제외하고 다른 인증서는 더 높은 수준의 인증서를 사용하여 자신을 입증해야 합니다.
HTTP three-way handshake
HTTP(HyperText Transfer Protocol)는 인터넷에서 가장 널리 사용되는 네트워크 프로토콜입니다. 정보는 일반 텍스트로 전송되므로 안전하지 않은 것으로 간주됩니다. HTTP의 3방향 핸드셰이크는 실제로 3방향 TCP 핸드셰이크를 사용하여 HTTP 연결 설정을 확인합니다.
아래 그림에서 볼 수 있듯이 SYN(동기)은 TCP/IP가 연결을 설정할 때 사용되는 핸드셰이크 신호, 시퀀스 번호 및 승인 번호입니다. 가리키는 세 개의 화살표는 3방향 핸드셰이크를 완료합니다. . 클라이언트와 서버가 데이터 전송을 시작합니다.
PS: 사진은 온라인 정보에서 가져온 것입니다.
첫 번째 핸드셰이크: 클라이언트가 서버에 syn 패킷(syn=j)을 보내고 SYN_SEND 상태로 들어가 서버 확인을 기다립니다.
두 번째 핸드셰이크: 서버가 syn 패킷을 받으면 클라이언트의 SYN(ack=j+1)을 확인하고 동시에 SYN 패킷(syn=k), 즉 SYN+ACK 패킷을 보내야 합니다. SYN_RECV 상태
세 번째 핸드셰이크: 클라이언트 클라이언트는 서버로부터 SYN+ACK 패킷을 수신하고 승인 패킷 ACK(ack=k+1)를 서버에 보냅니다. 패킷이 전송된 후 클라이언트와 서버는 진입합니다. ESTABLISHED 상태로 전환하고 3방향 핸드셰이크를 완료합니다.
HTTPS 핸드셰이크 프로세스
HTTPS는 HTTP를 기반으로 SSL 프로토콜을 추가합니다. SSL은 인증서를 사용하여 서버의 신원을 확인하고 브라우저와 서버 간의 통신을 암호화합니다. 구체적으로 암호화, 복호화, 검증을 수행하는 방법은 아래 그림과 같습니다. 다음은 핸드셰이크(handshake)라고 합니다. 추신: 아래 사진 설명은 http://zhuqil.cnblogs.com
1에서 가져왔습니다. 프로토콜의 서버에는 직접 만들거나 CA 인증서로 만들 수 있는 디지털 인증서 세트가 있어야 합니다. . 차이점은 직접 발급한 인증서는 계속 접속하기 전에 클라이언트에서 확인해야 하지만, CA 인증서를 사용하면 프롬프트 페이지가 팝업되지 않는다는 점입니다. 이 인증서 세트는 실제로 공개 키와 개인 키의 쌍입니다. 공개키는 다른 사람이 암호화하는 데 사용되고, 개인키는 자신이 복호화하는 데 사용됩니다.
3. 인증서 전송 이 인증서는 실제로 공개 키이지만 인증서 발급 기관, 만료 시간 등과 같은 많은 정보가 포함되어 있습니다.
4. 클라이언트 구문 분석 인증서
이 작업은 클라이언트의 TLS에서 수행됩니다. 먼저 발급 기관, 만료 시간 등 공개 키가 유효한지 확인합니다. 예외가 발견되면 팝업이 나타납니다. 인증서에 문제가 있음을 알리는 경고 상자가 나타납니다. 인증서에 문제가 없으면 임의의 값이 생성된 후 해당 임의의 값이 인증서로 암호화됩니다.
5. 암호화된 정보 전송
이 부분은 서버가 이 임의의 값을 얻을 수 있도록 하기 위한 것입니다. 이 임의의 값을 통해 암호화 및 복호화가 수행됩니다.
6. 서비스 구간 복호화 정보
서버는 개인 키로 복호화한 후 클라이언트가 전달한 임의의 값(개인 키)을 얻은 다음 이 값을 사용하여 콘텐츠를 대칭적으로 암호화합니다. 소위 대칭 암호화는 특정 알고리즘을 통해 정보와 개인 키를 혼합하여 개인 키를 모르면 콘텐츠를 얻을 수 없으며 클라이언트와 서버 모두 개인 키를 알고 있으므로 암호화 알고리즘은 충분히 강력하고 개인 키는 충분히 복잡하며 데이터는 충분히 안전합니다.
7. 암호화된 정보 전송
이 부분의 정보는 서비스 세그먼트에서 개인키로 암호화된 정보로 클라이언트에서 복원이 가능합니다.
8. 클라이언트는 정보를 복호화합니다.
클라이언트는 이전에 생성된 개인 키를 사용하여 서비스 세그먼트가 전달한 정보를 복호화한 후 복호화된 콘텐츠를 얻습니다.
PS: 전체 핸드셰이크 과정에서 제3자가 데이터를 모니터링하더라도 그들이 할 수 있는 일은 없습니다.
요약
HTTPS는 왜 안전한가요?
HTTPS 핸드셰이크의 네 번째 단계에서 사이트의 인증서를 신뢰할 수 없는 경우 웹사이트의 신뢰성을 확인하기 위해 다음 확인 인터페이스가 표시됩니다. 또한 6단계와 8단계에서는 클라이언트의 개인 키를 사용하여 암호화 및 해독하여 데이터 전송의 보안을 보장합니다.
HTTPS와 HTTP의 차이점
1. https 프로토콜은 CA에서 인증서를 신청하거나 자체 인증서를 만들어야 합니다.
2. http 정보는 일반 텍스트로 전송되는 반면 https는 안전한 SSL 암호화를 사용합니다.
3. http는 TCP로 직접 데이터를 전송하는 반면, https는 SSL(OSI 프리젠테이션 레이어) 계층을 통과하여 다른 포트를 사용합니다. 전자는 80(국내 신고 필요)이고 후자는 443입니다.
4. http 연결은 매우 간단하고 상태가 없습니다. HTTPS 프로토콜은 암호화된 전송 및 ID 인증을 수행할 수 있는 SSL+HTTP 프로토콜로 구축된 네트워크 프로토콜이며 http 프로토콜보다 더 안전합니다.
https 메시지가 tcp 메시지로 패키징되면 헤더 필드
또는 https의 본문 필드가 암호화되는지 여부에 관계없이 https 암호화는 전송 계층에서 완료됩니다.
패킷을 캡처하기 위해 tcpdump 또는 Wireshark 및 기타 tcp 레이어 도구를 사용하는 경우 암호화된 콘텐츠를 가져옵니다. 애플리케이션 레이어를 사용하여 패킷을 캡처하는 경우 Charels(Mac), Fildder(Windows)를 사용하세요. 패킷 캡처 도구를 사용하면 당연히 일반 텍스트로 표시됩니다.
PS: HTTPS 자체는 네트워크 전송 보안을 위한 것입니다.
예: Wireshark를 사용하여 패킷 캡처:
http, 캡처가 일반 텍스트로 되어 있는 것을 볼 수 있습니다:
https, 캡처가 암호 텍스트로 되어 있는 것을 볼 수 있습니다:
Appendix
HTTPS에서 일반적으로 사용하는 암호화 및 HASH 알고리즘은 다음과 같습니다.
비대칭 암호화 알고리즘: RSA, DSA/DSS
대칭 암호화 알고리즘: AES, RC4, 3DES
HASH 알고리즘: MD5, SHA1, SHA256
위 내용은 HTTP와 HTTPS 핸드셰이크란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











HTTP 상태 코드 520은 서버가 요청을 처리하는 동안 알 수 없는 오류가 발생하여 더 구체적인 정보를 제공할 수 없음을 의미합니다. 서버가 요청을 처리하는 동안 알 수 없는 오류가 발생했음을 나타내는 데 사용됩니다. 이는 서버 구성 문제, 네트워크 문제 또는 기타 알 수 없는 이유로 인해 발생할 수 있습니다. 이는 일반적으로 서버 구성 문제, 네트워크 문제, 서버 과부하 또는 코딩 오류로 인해 발생합니다. 상태 코드 520 오류가 발생하면 웹사이트 관리자나 기술 지원팀에 문의하여 자세한 정보와 지원을 받는 것이 가장 좋습니다.

HTTP 상태 코드 403은 서버가 클라이언트의 요청을 거부했음을 의미합니다. http 상태 코드 403에 대한 해결 방법은 다음과 같습니다. 1. 서버에 인증이 필요한 경우 올바른 자격 증명이 제공되었는지 확인합니다. 2. 서버가 IP 주소를 제한한 경우 클라이언트의 IP 주소가 제한되어 있거나 블랙리스트에 없습니다. 3. 파일 권한 설정을 확인하십시오. 403 상태 코드가 파일 또는 디렉토리의 권한 설정과 관련되어 있으면 클라이언트가 해당 파일 또는 디렉토리에 액세스할 수 있는 권한이 있는지 확인하십시오. 등.

NginxProxyManager를 사용하여 HTTPS 프로토콜에서 역방향 프록시를 구현하는 방법 최근 몇 년 동안 인터넷의 인기와 응용 프로그램 시나리오의 다양화로 인해 웹 사이트 및 응용 프로그램의 액세스 방법이 점점 더 복잡해졌습니다. 웹사이트 액세스 효율성과 보안을 향상시키기 위해 많은 웹사이트에서는 사용자 요청을 처리하기 위해 역방향 프록시를 사용하기 시작했습니다. HTTPS 프로토콜의 역방향 프록시는 사용자 개인 정보를 보호하고 통신 보안을 보장하는 데 중요한 역할을 합니다. 이 기사에서는 NginxProxy를 사용하는 방법을 소개합니다.

HTTP 301 상태 코드의 의미 이해: 웹 페이지 리디렉션의 일반적인 응용 시나리오 인터넷의 급속한 발전으로 인해 사람들은 웹 페이지 상호 작용에 대한 요구 사항이 점점 더 높아지고 있습니다. 웹 디자인 분야에서 웹 페이지 리디렉션은 HTTP 301 상태 코드를 통해 구현되는 일반적이고 중요한 기술입니다. 이 기사에서는 HTTP 301 상태 코드의 의미와 웹 페이지 리디렉션의 일반적인 응용 프로그램 시나리오를 살펴봅니다. HTTP301 상태 코드는 영구 리디렉션(PermanentRedirect)을 나타냅니다. 서버가 클라이언트의 정보를 받을 때

NginxProxyManager를 사용하여 HTTP에서 HTTPS로의 자동 점프를 구현하는 방법 인터넷이 발전하면서 점점 더 많은 웹사이트가 HTTPS 프로토콜을 사용하여 데이터 전송을 암호화하여 데이터 보안과 사용자 개인 정보 보호를 향상시키기 시작했습니다. HTTPS 프로토콜에는 SSL 인증서 지원이 필요하므로 HTTPS 프로토콜 배포 시 특정 기술 지원이 필요합니다. Nginx는 강력하고 일반적으로 사용되는 HTTP 서버 및 역방향 프록시 서버이며 NginxProxy

빠른 적용: PHP의 실제 개발 사례 분석 여러 파일의 비동기 HTTP 다운로드 인터넷의 발전으로 파일 다운로드 기능은 많은 웹 사이트와 응용 프로그램의 기본 요구 사항 중 하나가 되었습니다. 여러 파일을 동시에 다운로드해야 하는 시나리오의 경우 기존 동기 다운로드 방법은 비효율적이고 시간이 많이 걸리는 경우가 많습니다. 이러한 이유로 PHP를 사용하여 HTTP를 통해 여러 파일을 비동기적으로 다운로드하는 것이 점점 더 일반적인 솔루션이 되었습니다. 본 글에서는 실제 개발 사례를 통해 PHP 비동기 HTTP를 활용하는 방법을 자세히 분석해 보겠습니다.

C#의 일반적인 네트워크 통신 및 보안 문제와 해결 방법 오늘날 인터넷 시대에 네트워크 통신은 소프트웨어 개발에 없어서는 안 될 부분이 되었습니다. C#에서는 일반적으로 데이터 전송 보안, 네트워크 연결 안정성 등과 같은 일부 네트워크 통신 문제가 발생합니다. 이 문서에서는 C#의 일반적인 네트워크 통신 및 보안 문제에 대해 자세히 설명하고 해당 솔루션과 코드 예제를 제공합니다. 1. 네트워크 통신 문제 네트워크 연결 중단: 네트워크 통신 과정에서 네트워크 연결이 중단될 수 있으며, 이로 인해

HTTP 상태 코드 200: 성공적인 응답의 의미와 목적 탐색 HTTP 상태 코드는 서버 응답 상태를 나타내는 데 사용되는 숫자 코드입니다. 그 중 상태 코드 200은 요청이 서버에 의해 성공적으로 처리되었음을 나타냅니다. 이 기사에서는 HTTP 상태 코드 200의 구체적인 의미와 사용법을 살펴보겠습니다. 먼저 HTTP 상태 코드의 분류를 이해해 보겠습니다. 상태 코드는 1xx, 2xx, 3xx, 4xx 및 5xx의 다섯 가지 범주로 나뉩니다. 그 중 2xx는 성공적인 응답을 나타냅니다. 그리고 200은 2xx에서 가장 일반적인 상태 코드입니다.
