1. [SSL디지털 인증서?]
SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서다. 클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서 정보를 전달한다. 클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지를 검증 한 후에 다음 절차를 수행하게 된다. SSL과 SSL 디지털 인증서를 이용했을 때의 이점은 아래와 같다.
- 통신 내용이 공격자에게 노출되는 것을 막을 수 있다.
- 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지를 판단할 수 있다.
- 통신 내용의 악의적인 변경을 방지할 수 있다.
2. HTTP 통신의 문제점
HTTP를 사용하여 통신하고있는 내 도메인을 확인해보겠다.
스마트스니퍼를 이용하여 패킷을 가져와보겠다.
기존 HTTP방식에서는 데이터가 암호화되지않아, 헤더,쿠키,바디등 모든 정보가 그대로 노출되게된다. 만약 악의적인 사용자가 해당 패킷을 가로채게된다면 상당한 문제가 발생하게된다.
3. HTTPS 란?
기존 HTTP는 암호화되지 않은 방법으로 데이터를 전송하기 때문에 서버와 클라이언트가 주고 받는 메시지를 감청하거나 데이터를 변조하는 일이 쉽게 일어날 수 있다. 이를 보완하기 위한것이 HHTPS이다.
HTTPS는 SSL프로토콜을 사용하여 암호화를 진행한다.
4. SSL을 이용한 암호화 방식
1) SSL인증
- 서버에서는 개인키와 공개키를 생성한다.
- CA기관으로부터 공개키와 도메인을 넘겨 인증요청
- CA기관에서는 해당 서비스를 검증한후, 서버에서 넘겨준 공개키와 서비스의 정보를 다시 CA기관에서 공개키방식을 이용하여 암호화한다. (CA기관의 public key는 이미 브라우저의 내장되어있다.)
- CA기관에서는 암호화한 인증서를 서버에게 넘긴다.
- 서버에서는 발급받은 인증서를 클라이언트에게 넘긴다.
- 클라이언트에서는 해당 인증서의 CA기관과 브라우저에 등록된 CA기관을 비교하여, 등록된 CA기관이면 브라우저에 내장되있는 public키를 이용하여, 인증서에 있는 서버의 공개키를 복호화한다.
2) 발급받은 인증서를 통해 클라이언트와 서버간 데이터 송수신
- 클라이언트는 데이터를 보낼때 비공개키 방식으로 데이터를 암호화한다.
- 비공개키를 통해 암호화된 데이터와 비공개키를 서버의 공개키를 통해 암호화하여 서버에 넘긴다.
- 서버에서는 private key를 이용하여, 클라이언트에게 발급받은 비공개키를 복호화하여, 해당 비공개키로, 데이터를 복호화한다.
'개발 > WEB' 카테고리의 다른 글
디바운싱과 쓰로틀링 (0) | 2024.06.20 |
---|---|
12가지 API 보안 강화 전략 (0) | 2024.05.07 |
OAuth란? (0) | 2024.05.02 |
SSE(Server-Sent-Events) (0) | 2024.04.15 |
세션, 쿠키 그리고 토큰의 차이점 (0) | 2024.04.11 |