웹의 시작. http와 https 의 개념을 알고, https가 왜 대두가 되었는지 그리고, 웹 개발시에 https를 왜 써야하는지 간략히 정리해본다.
1. http
HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜.
사용자가 웹 사이트를 방문하면 사용자 브라우저가 웹 서버에 HTTP 요청을 전송하고 웹 서버는 HTTP 응답으로 응답
웹 서버와 사용자 브라우저는 데이터를 일반 텍스트로 교환.
HTTP 프로토콜은 네트워크 통신을 작동하게 하는 기본 기술
2. http 동작
HTTP는 OSI(Open Systems Interconnection) 네트워크 통신 모델의 애플리케이션 계층 프로토콜.
HTTP는 여러 유형의 요청과 응답을 정의
웹 사이트의 일부 데이터를 보려는 경우 HTTP GET 요청
연락처 양식 작성과 같은 일부 정보를 전송하려는 경우 HTTP PUT 요청을 전송
다음은 웹서버 응답 몇가지
- 200 - OK(정상)
- 400 - Bad request(잘못된 요청)
- 403 - 권한없음
- 404 - Resource not found(리소스를 찾을 수 없음)
- 500, 502 등 웹서버 오류 등등
브라우저와 웹 서버가 사용하는 통신 방식이므르 이러한 요청 및 응답 통신은 일반적으로 사용자에게 보이지 않음.
3. https
HTTPS(Hypertext Transfer Protocol Secure)는 HTTP의 확장 버전 또는 더 안전한 버전.
HTTPS에서는 브라우저와 서버가 데이터를 전송하기 전에 안전하고 암호화된 연결을 설정
4. https 동작
HTTP는 암호화되지 않은 데이터를 전송.
브라우저에서 전송된 정보를 제3자가 가로채고 읽을 수 있음.
통신에 또 다른 보안 계층을 추가하기 위해 HTTPS로 확장됨.
HTTPS는 HTTP 요청 및 응답을 SSL 및 TLS 기술에 결합함
HTTPS 웹 사이트는 독립된 인증 기관(CA)에서 SSL/TLS 인증서를 획득해야 함.
웹 사이트는 신뢰를 구축하기 위해 데이터를 교환하기 전에 브라우저와 인증서를 공유함.
SSL 인증서는 암호화 정보도 포함하므로 서버와 웹 브라우저는 암호화된 데이터나 스크램블된 데이터 교환
프로세스는 다음과 같이 작동합니다.
- 사용자 브라우저의 주소 표시줄에 https:// URL 형식을 입력하여 HTTPS 웹 사이트 방문
- 브라우저는 서버의 SSL 인증서를 요청하여 사이트의 신뢰성을 검증 시도
- 서버는 퍼블릭 키가 포함된 SSL 인증서를 회신으로 전송
- 웹 사이트의 SSL 인증서는 서버 아이덴티티를 증명.
- 브라우저에서 인증되면, 브라우저가 퍼블릭 키를 사용하여 비밀 세션 키가 포함된 메시지를 암호화하고 전송.
- 웹 서버는 프라이빗 키를 사용하여 메시지를 해독하고 세션 키를 검색
- 세션 키를 암호화하고 브라우저에 승인 메시지를 전송
- 브라우저와 웹 서버 모두 동일한 세션 키를 사용하여 메시지를 안전하게 교환하도록 전환
5. http/2, http/3, https
[ HTTP/1.1 ]
1996~1997년에 출시된 최초의 HTTP 버전이 HTTP/1.1
[ HTTP/2 ]
HTTP/2와 HTTP/3은 프로토콜 자체를 업그레이드한 버전으로 데이터 전송 시스템을 수정하면서 효율성 개선
HTTP/2는 텍스트 형식 대신, 바이너리로 데이터를 교환.
HTTP/2는 서버가 새 HTTP 요청을 기다리는 대신, 클라이언트 캐시에 응답을 사전에 전송 가능.
[ HTTP/3 ]
HTTP/3은 비교적 최근에 나온 버전이며, HTTP/2를 한 단계 더 발전시킨 것
HTTP/3의 목표는 실시간 스트리밍 및 기타 최신 데이터 전송 요구 사항을 보다 효율적으로 지원하는 것.
[ HTTS ]
HTTPS는 HTTP에서 데이터 보안 문제를 우선시.
최신 시스템에서는 SSL/TLS와 함께 HTTP/2를 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 인증서 사용 |
장점 | 인터넷을 통한 통신 지원 | 웹 사이트에 대한 권위, 신뢰성 및 검색 엔진 순위 개선 |
6. https 서비스를 위해 필요한 것
HTTPS 서비스를 위해 필요한 것은 바로 SSL/TLS인증서 이다. 서비스 웹서버와 브라우져 사이에서 암복호화의 역할을 하기위해 필요한 것.
[ ssl인증서를 구하는 방법]
- 사는 방법 : 도메인 소유인증 절차를 거쳐 구매한 후에 웹서버에 설치해서 사용하면 됨.
- 내가 만드는 방법 : let's encrypt등 무료로 발급받앗 설치해서 사용하거나, 직접 인증서를 만들고, root인증서를 직접 브라우져에 등록해서 사용하는 방법
- proxy를 이용해서 우회하여 ssl인증서 없이 https 서비스를 진행하는 방법(추후 포스팅예정)
등이 있음.
각각의 방법에 대해서는 시간 되는대로 포스팅 할 예정
7. https가 반드시 필요한 웹관련 서비스
HTTPS 에서만 가능한 html component 또는 웹서비스이 개발을 진행하다 보면 많이 만나게 된다.
몇가지 정리해보면
- Geolocation (브라우져 위경도 위치 조회)
- Facebook webhook url
- Google app 인증도메인
- Telegram bot webhook url
- 기타 webhook url 및 html5 관련 서비스 등
위 몇가지 뿐 아니라, 실제로 외부 api서비스를 연결하는 경우 거의다 https를 요구하고 있다.
다음 시간에 localhost로 개발할 때 https를 임시 적용하기 위한 방법으로 nglok을 사용하는 방법에 대해 설명할 예정이다.
링크 클릭시 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
'WEB' 카테고리의 다른 글
[css]Flexbox 마스터하기: 2.Flex 컨테이너 설정 (0) | 2023.06.25 |
---|---|
[css]Flexbox 마스터하기: 1.소개 (0) | 2023.06.24 |
[html5] input type date 와 input type time (1) | 2023.06.17 |
ngrok으로 로컬 개발 환경(localhost) https 로 개발테스트 하기 (1) | 2023.06.14 |
초간단 HTML 웹 서버 구축 - Live Server vscode (0) | 2023.06.11 |