sggnology
하늘속에서IT
sggnology
전체 방문자
오늘
어제
  • 분류 전체보기 (83)
    • Algorithm (31)
      • Programmers (27)
      • Baekjoon (4)
    • WIKI (4)
      • VirtualBox (1)
      • Power Toys (1)
    • NodeJS (4)
      • nvm (1)
      • React (1)
      • Vue (1)
    • Dev Language (3)
      • Java (2)
      • Kotlin (1)
    • Spring Boot (17)
      • Gradle (1)
      • JPA (3)
    • DB (4)
      • MariaDB (3)
      • Redis (0)
    • Android (6)
      • Debug (3)
    • Nginx (3)
      • Debug (1)
    • Intellij (0)
    • Network (1)
    • Git (2)
      • GitHub (2)
    • Chrome Extension (0)
    • ETC (5)
      • Monitoring (2)
    • Linux (1)
      • WSL (1)
    • Visual Studio (1)
    • Side Project (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • JPA
  • mariadb
  • nginx
  • 안드로이드 스튜디오
  • 알고리즘
  • DB
  • Android Studio
  • 백준
  • java
  • 레벨2
  • 오블완
  • 프로그래머스
  • 연습문제
  • 티스토리챌린지
  • spring boot
  • docker
  • 고득점KIT
  • 고득점 Kit
  • kotlin
  • 레벨3

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sggnology

하늘속에서IT

[Network] Https 는 브라우저에서 어떻게 인증과정을 거치게 되는걸까?
Network

[Network] Https 는 브라우저에서 어떻게 인증과정을 거치게 되는걸까?

2023. 5. 22. 22:39
728x90

원문 출처

  • nuritech 님의 설명을 기반으로 필자가 스스로 이해하기 쉽게 정리한 내용입니다. 자세하고 좋은 설명은 아래 블로그에서 확인 바랍니다!
 

HTTPS 통신 원리 쉽게 이해하기 (Feat. SSL Handshake, SSL 인증서)

이 글을 쓰게 된 이유는,, 나의 평소 HTTPS 에 대한 지식은 HTTPS 가 암호화된 네트워크 통신 프로토콜이고 HTTPS 를 사용한 네트워크 통신에서는 주고받는 패킷을 까도 데이터가 암호화되어 있어 안

nuritech.tistory.com


HTTPS 넌 도대체 뭐야?

HTTPS(HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure)는 월드 와이드 웹 통신 프로토콜인 HTTP 의 보안이 강화된 버전이다.(https://ko.wikipedia.org/wiki/HTTPS)
  • 쉽게 말해서 HTTP 에 보안이 강화된 버전이다.
  • https 로 통신하기 위해선 인증서를 필요로 한다.

 

인증서 발급(SSL 인증서)

용어정리 
CA : Certificate Authority(인증서 기관)
  1. 서버는 공개키 방식으로 서버의 공개키, 비밀키를 생성한다.
    • 여기서 만들어진 공개키와 서버키를 s공개키, s비밀키 라 정의한다.
  2. s공개키와 서버정보로 CA 에 인증서 생성을 요청한다.
  3. CA 는 요청을 받은 후 공개키, 비밀키를 생성한다.
    • 여기서 만들어진 공개키와 서버키를 c공개키, c비밀키 라 정의한다.
  4. CA 는 전달된 s공개키와 서버정보를 기반으로 인증서를 발급한다.
  5. 생성된 인증서와 c공개키를 서버에게 제공한다.
    • 인증서는 c비밀키를 통해 암호화된 상태이다.

 

발급된 SSL인증서를 사용한 통신 방식(SSL HandShake)

SSL HandShake

  1. Client Hello
    • 서버와 연결 시도
  2. Server Hello
    • 연결을 시도한 클라이언트에게 응답
  3. Certificate
    • CA 로 부터 응답받은 인증서와 s공개키 포함해서 응답
  4. Server Key Exchange - Optional
    • Certificate 단계에서 전달한 SSL 인증서 응답시 s공개키가 누락 되었을 경우 동작
      • 서버가 s공개키를 전달
  5. Server Hello Done
  6. 브라우저 인증 방식(아래 블록 참고)
  7. Client Key Exchange
    • 설명
      • 서버와 클라이언트 사이에 보안이 적용된 통신을 위해 대칭키공유를 위한 요청
        • 이 때 대칭키는 s공개키로 암호화된 상태로 전달
  8. Client Change Cipher Spec
    • 클라이언트에서 암호화 방식을 7에서 전달된 대칭키로 변경되었다는 요청
  9. Client Finished
  10. Server Change Cipher Spec
    • 서버에서 암호화 방식을 7에서 제공받은 대칭키로 변경되었다는 요청
  11. Server Finished

 

브라우저 인증 방식

  • 서버로 부터 전달받은 인증서(c비밀키로 암호화 된 상태) 검증
    1. c공개키 여부 확인
      • c 공개키가 없다면 
        • 외부 요청을 통해 CA 의 정보와 공개키를 획득
    2. c공개키를 통해 암호화된 인증서 복호화 시도
      • 복호화를 통해 인증서 검증 여부 확인

 

728x90
    sggnology
    sggnology
    하늘은 파란색이니까 내 삶도 파란색이길 ㅎㅎ

    티스토리툴바