매일메일을 통한
하루하루 CS 공부하기
HTTP란?
HyperText Transfer Protocol
클라이언트와 서버 간 통신을 위한 통신 규약이다.
HTTP는 암호화되지 않은 평문 데이터를 전송하기 때문에 제 3자가 정보를 조회할 수 있다는 위험이 있다.
이를 해결하기 위해 HTTPS가 등장한 것이다.
HTTPS란?
HTTPS(Hyertext Transfer Protocol Secure)
암호화된 데이터를 전송하기 때문에 제 3자가 볼 수 없도록 할 수 있다.
적용 방법
인증 기관 (CA)에게 인증서를 발급받아야 한다.
CA에 인증서를 요청하면 CA 이름, 서버의 Public Key, 서버의 정보를 활용하여 인증서를 생성하고 이를 CA Private Key로 암호화하여 서버로 전송한다.
이때 인증서는 CA Private Key로 암호화되니 신뢰성을 확보할 수 있다.
해당 인증서를 서버 측에서 발급받으면 HTTPS를 적용할 수 있다.
서버의 Nginx와 같은 웹서버에서 HTTPS로 포트 포워딩 (80 -> 443)을 적용하므로써 HTTPS를 적용할 수 있다.
동작 원리 (TLS Handshake)
Client -> Server로 최초 요청 시 Cryptography Algorithm, Protocol Version, random seed를 전달한다.
이를 받은 Server는 Client에게 Cryptograpy Algorithm, Protocol Version, random seed를 전달하며, Client는 Server의 인증서를 CA의 Public Key로 decrypt하여 검증한다.
검증이 끝난 이후 Client는 Server에서 생성된 random seed를 조합하여 PreMaster Secret 값을 생성하여 Server Public Key로 암호화하여 전달
Server는 전달받은 암호화된 데이터를 Private Key로 복호화하여 Pre Master Secret을 얻는다.
클라이언트와 서버는 Pre Master Secret을 통해 세션키를 생성하고, 이를 활용하여 대칭키 암호화 알고리즘을 활용하여 데이터 송수신을 시행한다.
'Back-end' 카테고리의 다른 글
[Back-End] 로드밸런싱 톺아보기 (0) | 2025.01.30 |
---|---|
[Back-End] DB Replication이란 무엇인가. (0) | 2025.01.24 |
[Back-End] 리버스 프록시 vs 포워드 프록시 (0) | 2025.01.13 |
[Back-End] CORS란 무엇인가요? (1) | 2025.01.10 |
[Back-End] 갭락(Gap Lock)과 넥스트키 락(Next-Key Lock) (0) | 2025.01.09 |