티스토리 뷰
HTTPS란?
HTTPS(HyperText Transfer Protocol over Secure Soket Layer)
HTTP의 보안이 강화된 버전으로 통신의 인증과 암호화를 위해 개발되었다.
일반 텍스트를 이용하는 대신 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화 한다.
HTTPS의 기본포트는 443이다.
TLS 란?
TLS (Transport Layer Security)
전송 계층 보안 ( 과거 명칭이 SSL (Secure Sockets Layer)) 컴퓨터 네트워크 통신 보안을 제공하기 위해 설계된 암호 규약. SSL 3.0이 TLS 1.0의 기반이 되었다.
HTTPS 양방향? 단방향?
SSL에는 양방향 인증 / 단방향 인증이 있다.
- WEB서버에만 서버의 인증서가 존재해서 웹브라우저를 사용하는 사용자가 해당 서버의 인증서를 확인하게 되는 경우 단방향 인증.
- 사용자 개인의 인증서가 서버에 전달되서 서버가 사용자 개인을 인증하는 과정까지 거치게 된다면 양방향 인증.
HTTPS 통신 흐름
-
어플리케이션 서버(A)를 만드는 기업은 HTTPS를 적용하기 위해 공개키와 개인키를 만든다.
-
신뢰할 수 있는 CA 기업을 선택하고 그 기업에 내 공개키를 관리해달라고 계약하고 돈을 지불한다.
-
계약을 완료한 CA 기업은 CA 기업만의 공개키와 개인키가 있다.
CA기업은 기업의 이름과 A서버의 공개키, 공개키의 암호화 방법 등의 정보를 담은 인증서를 만들고,
해당 인증서를 CA기업의 개인키로 암호화해서 A서버에 제공한다.
-
A서버는 암호화된 인증서를 가지게 되고 A서버에 Request가 오면 클라이언트에게 인증서를 줍니다.
-
클라이언트 입장에서는 A서버의 정보를 CA 기업의 개인키로 암호화한 인증서를 받게 됩니다.
-
CA 기업의 공개키는 브라우저는 알고 있다.
-
브라우저는 CA 기업 리스트를 쭉 탐색해서 공개키로 인증서를 해독하여 A서버의 공개키를 얻습니다.
-
A서버의 공개키로 암호화해서 Request를 날리게 된다.
(4~5번은 handshake 하는 과정. https 전송전에 request를 통해서 받게 된다.)
공부에 참고 사이트
'네트워크' 카테고리의 다른 글
[CentOS7] 리눅스 서버 포트 오픈 - node server 포트 오픈 (1) | 2020.02.29 |
---|---|
Forward Proxy와 Reverse Proxy 차이점 (5) | 2020.01.28 |
- Total
- Today
- Yesterday
- 버츄얼스튜디오코드
- git
- Python
- 넘파이
- Java
- 머신러닝
- 리엑트
- LeetCode 알고리즘 공부
- LeetCode 5월 챌린지
- GPTGOT
- Node
- k8s metrics-server running
- React 프로젝트 생성
- 파이썬
- LeetCode 풀이
- 지도학습
- 30 Day LeetCode Challenge
- GPT서비스
- 퍼셉트론
- LeetCode 30일 챌린지
- vscode
- react
- 노드
- 에라토스테네스
- numpy
- Java leetcode
- 파이썬 numpy
- k8s metrics-server
- Component
- CHATGOT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |