Facts
✅ Product 서버에 ssh 인증서를 통한 Https 연결
Findings
HTTP
HTTP는 World Wide Web에서 하이퍼텍스트 문서를 교환하기 위하여 사용되는 통신규약이다.
HTTP 프로토콜은 다음과 같은 특징을 갖는다.
- 비연결 지향한다. (Connectionless)
클라이언트가 request를 서버에 보내고, 서버가 클라이언트에 요청에 맞는 response를 보내면 바로 연결을 끊는다. - 상태정보 유지를 하지 않는다. (Stateless)
연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않는다.
HTTPS
HTTP는 따로 암호화 과정을 거치지 않기 때문에 중간에 패킷을 가로챌 수 있고, 수정할 수 있다.
따라서 보안이 취약하다.
이를 보완하기 위해 나온 것이 HTTPS이다. 중간에 암호화 계층을 거쳐서 패킷을 암호화한다.
HTTPS는 HTTP 통신을 하는 소켓 부분을 SSL이나 TSL이라는 프로토콜로 대체한 것이다.
HTTPS는 제3자 인증, 공개키 암호화, 비밀키 암호화를 사용한다.
제3자 인증은 믿을 수 있는 인증기관에 등록된 인증서만 신뢰하는 것이고,
공개키 암호화는 비밀키를 공유하기 위해 사용한다.
비밀키 암호화는 통신하는 데이터를 암호화하는데 사용한다.
SSL Handshake 과정은 다음과 같다.
- 클라이언트는 TCP 3way handshake를 수행한 이후 Client Hello를 전송한다.
- 서버는 인증서를 보낸다.
- 클라이언트는 받은 인증서를 신뢰하기 위해서 등록된 인증기관인지 확인한다.
이 인증서는 인증기관의 개인 키로 암호화 되어있고, 공개키로 검증할 수 있다.
클라이언트는 클라이언트에 내장된 공개키를 이용해서
통신에 사용할 비밀키를 암호화해서 서버에 보낸다. - 서버는 이를 개인키로 확인하고 이후 통신은 공유된 비밀키로 암호화되어 통신한다.
- 클라이언트와 서버는 헨드쉐이크 단계를 서로에게 알린다.
'Project > TIL, WIL' 카테고리의 다른 글
TIL(54) GithubAction + ElasticBeanstalk + Docker + AWS ECR로 CI/CD 하면서 발생한 에러 고치기 (0) | 2021.12.27 |
---|---|
TIL(53) JPA 연관관계 에러 고치기 (0) | 2021.12.27 |
TIL(51) JPA 관련 에러 고치기 (0) | 2021.12.27 |
TIL(50) S3를 이용한 사진 업로드 기능 속도 개선하기 (0) | 2021.12.27 |
TIL(49) 21-12-09: CORS 에러 해결하기 (0) | 2021.12.27 |