HTTPS (HyperText Transfer Protocol Secure)는
HTTP + TLS(SSL)을 이용해 암호화된 통신을 제공하는 프로토콜입니다.
즉, 기존 HTTP에 보안 기능이 추가된 버전입니다.
HTTP는 요청과 응답을 평문(Plain text)으로 주고받습니다.
때문에 중간에서 데이터를 훔치면 누구나 확인 할 수 있습니다.
(로그인 정보, 카드 번호 등이 유출될 수 있음)
예)
HTTP → 중간 공격자가 ID/PW 훔쳐서 확인 가능!
HTTPS → 데이터가 암호화되어 읽을 수 없음!
사용자가 서버에 접속을 요청하면,
서버는 브라우저에게 자기 신분을 증명하는 SSL/TLS 인증서를 보냅니다.
여기에는 서버 공개키(Public Key), 도메인 정보, 인증기관(CA)의 서명 ,유효기간 등
정보가 들어있으며, 해당 인증서가 유효한지 클라이언트가 확인합니다.
클라이언트가 대칭키(세션 키) 생성.
클라이언트가 서버한테서 제공받은 공개키로 세션키를 암호화하여 서버에 전송.
서버는 가지고 있던 공개 키로 세션키를 복호화하여 클라이언트와 같은
세션키를 가지게 됨
앞으로 클라이언트와 서버는 같은 세션키를 가지고 있으므로 해당
세션키를 가지고 서로 데이터를 암/복호화 하여 통신하게 됨
++ 결국 이 과정은 세션키를 서버에 안전하게 전달하기 위한 과정인 것입니다!
이후 데이터를 세션 키를 사용해 대칭 암호화로 빠르게 통신
도메인 구매
SSL 인증서 발급 (Let’s Encrypt 무료 가능)
웹 서버(Nginx 등)에 SSL 인증서 설정
HTTPS 리디렉션 적용 (HTTP 접속도 HTTPS로 강제)
http 와 https의 차이점과 https의 통신 방법에 대해서 알아 보았습니다.
확실히 https의 사용은 필수가 아니라 의무라는 생각이 드네요!