HTTPS   Secure Hypertext Transfer Protocol   HTTP 보안계층 구현

(2023-06-10)

https, HTTP over TLS, HTTP over SSL, HTTP Secure


1. (HTTP over TLS, HTTP over SSL, HTTP Secure)  HTTPS웹 서버웹 브라우저 간의 보안프로토콜

  ㅇ HTTP 및 SSL/TLS(보안 채널)를 조합시킴
     - HTTP(응용계층)와 TCP(전송계층) 사이에서 일종의 보안 계층을 구현
        . 보안 계층 : HTTP 메세지TCP로 보내기 전에 먼저 그것을 암호화하는 계층 (SSL/TLS)

  ㅇ HTTPS 암호화 대상
     - 요청 문서의 URL, 문서 내용, 폼 요소 내용, 쿠키, HTTP 헤더 내용


2. HTTPS의 특징SSL/TLS 상의 HTTP 구현 (HTTP와 SSL/TLS의 조합)

       

  ㅇ 주요 기능
     - 암호화(Encryption)
     - 인증(Authentication)
     - 변경감지 등

  ㅇ URI 스킴 접두사 : `https`

  ㅇ 사용 포트
     - 만일, URL이 `http`가 아닌 `https` URI 스킴 접두사를 갖으면,
     - 통상적인 HTTP 80번이 아닌, HTTPS 443번 포트 번호를 사용

  ㅇ 표준 : RFC 2818


3. HTTPS의 보안 작동 방식

  ㅇ 만일, 클라이언트(웹브라우저)가 평범한 http가 아닌 https 스킴을 갖는 URL 주소를 만나면,
     - 웹서버에 80번이 아닌 443번 포트번호로 `TCP 연결`을 맺고,
     - 바이너리 포멧으로 된 몇몇 보안 매개변수를 교환(핸드세이크, `키 교환`)하고,
     - 그와 관련된 HTTPS 명령들이 그 뒤를 잇게 됨 


4. HTTPS의 보안 연결 확립을 위한 핸드세이크 (SSL/TLS)

  ㅇ 주요 교환 대상 
     - 프로토콜 버전 번호 교환
     - 상호 알고있는 암호 선택
     - 양단(클라이언트/서버) 간의 신원 인증
        . (주로, 서버 인증서 위주로 사용)
        . (대부분, 클라이언트 인증서보안이 보다 강화된 조직에서 만 사용)
     - 보안 채널 암호화를 위한 임시 세션 키 생성
        . (세션 키 : 양 종단 간 성립된 한시적 연결 세션에 만 사용되는 일시적인 대칭 키/암호화 키)

  ㅇ 핸드세이크 절차
     - 웹브라우저(클라이언트)가 서버에게 여러 암호 후보들을 보내고 서버 인증서를 요구
     - 서버는 선택한 암호서버 인증서를 보냄
     - 클라이언트가 비밀 정보를 보내고, 클라이언트서버암호 키를 생성
     - 상호 암호화 통신 시작


5. HTTPS의 서버 인증서X.509에 기반한 인증서로써,                         ☞ 디지털 인증서/공개키 인증서 참조
     - 인증서에 ` 사이트 정보`가 추가됨

  ㅇ 서버 인증서에 포함된 주요 필드들
     - 인증서 일련번호 및 유효기간
     -  사이트의 이름
     -  사이트의 DNS 호스트명 (FQDN)
     -  사이트의 공개키
     - 서명 기관(인증기관)의 이름
     - 서명 기관(인증기관)의 디지털서명 등

  ㅇ ` 사이트 정보`에 대한 인증서 주요 검사 (웹브라우저가 수행함)
     - 날짜 검사          : 인증서 유효기간 검사 (만료,활성화 여부 등)
     - 서명자 유효성 검사 : 올바른 인증기관에서 파생된 인증서인지를 검사 (신뢰 사슬)
     - 서명 검사          : 인증서 무결성 검사
     - 사이트 신원 검사   : 인증서에 명시된 도메인명과 실제 도메인명이 부합되는가를 검사
        . 통상, 단일 도메인명이지만, 서버 팜(서버 클러스터)을 위해, 와일드카드(*) 표현 허용
     - 가상 호스팅 검사   : 하나의 서버에 여러 사이트/호스트를 운용하는 경우로써,
                            다소 비 보안적이고 부가적인 관리/절차 등이 필요
        . 원칙적으로, (IP주소):(포트번호 443)에 단 하나의 인증서 만을 매핑시켜 암호화하나,
        . 단일 서버에 여러 호스트가 운영되면, 각각을 식별 보안화하기에는 비용적으로 불리하여,
        . 단순 텍스트(Server Name Indication)로 서버명을 노출(평문)시킬 수 있도록 보안성 완화
           . RFC 4366 (Transport Layer Security (TLS) Extensions)


6. HTTPS의 연결 초기웹브라우저는 어떤 사이트에 최초 연결시,
     - 웹 서버 인증서를 가져와서 검증함
        . 웹브라우저는 이미 신뢰할만한 인증기관 인증서를 갖고 출하되어,
        . 디지털 서명 검증이 즉시 가능 함 (보통, 웹브라우저 주소창 근처에 검증 결과를 보임)
     - 만일, 상대 웹서버가 신뢰할 수 없으면, 
        . 해당 서명기관의 신뢰 및 진행 여부를 사용자에게 물어보는 대화상자를 보여줌

전송 레벨 보안
   1. SSL/TLS   2. SSL/TLS 구성 프로토콜   3. SSL/TLS 핸드세이크   4. HTTPS   5. SSH   6. SSH 구현  
웹 프로토콜 (HTTP)
   1. HTTP   2. HTTP 메세지   3. HTTP 메소드   4. HTTP 상태코드   5. 프록시   6. 프록시 보안   7. HTTP 캐시   8. 쿠키   9. HTTPS   10. HTTP 표준  


"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"