본문 바로가기
개발공부/개념정리

HTTP, HTTPS, SSL, TLS

by parkman

HTTP 란 ?

HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 양쪽에서 통신할 수 있도록 구현해야 하는 기본 통신 프로토콜로, 요청과 응답, 세션, 캐싱, 인증 등을 다룬다.

 

HTTPS 란 ?

HTTP는 브라우저와 서버 사이에서 정보를 평문으로 전송하므로 정보가 전달되는 네트워크에서 전송되는 정보를 엿볼 수 있다. 이런 보안 문제로 인해 클라이언트와 서버가 먼저 암호화 통신 채널을 설정한 다음 평문 HTTP 메시지를 전송함으로써 정보 유출을 막는 HTTPS (HTTP Secure)가 소개되었다.

SSL, TLS 란 ?

암호화 채널은 이전에 SSL(Secure Socket Layer)이라고 불렸던 TLS(Transport Layer Security) 프로토콜을 사용해서 만든다. 흔히 SSL과 TLS를 혼용했으나 SSL 3.0은 TLS 1.0으로 대체되었다. SSL은 넷스케이프가 개발한 프로토콜인 반면 TLS는 IETF 표준이다.

네트워크에서 메세지 전송시 보안을 위해 개발된

표준 프로토콜이다. 즉, HTTP만을 위한 프로토콜이 아닌 응용계층의 여러 프로토콜의 보안을 위해 발명된 프로토콜이다. 좀 더 정확히 말하면, TCP를 보호하는 프로토콜이다.

 

클라이언트 또는 서버에서 메세지를 만들어 상대에게 전달할때, 응용계층에서 만들어진 메세지가 전송계층으로 가기전 SSL/TLS를 통해 데이터가 암호화가 된다. 그 후 전송계층을 통해 네트워크로 데이터가 상대에게 전달 된다.

 

 

 

암호 기술의 핵심

기밀성, 무결성, 인증이 HTTPS에만 한정된 것은 아니다. 이러한 특징은 암호 기술의 핵심 개념이다. 이제부터는 각 특징에 대해서 들여다보자.

 

1. 기밀성

기밀성Confidentiality은 프라이버시다. 즉, 기밀성은 인증되지 않은 제3자가 정보를 읽지 못하도록 보호한다. 그 과정은 보통 평문plaintext이라고 하는 읽을 수 있는(들을 수 있거나 볼 수 있는) 정보 형식을 암호문ciphertext이라고 하는 뒤죽박죽 된 읽을 수 없는 정보 형식으로 변환하는 작업을 거친다. 이 과정을 암호화encryption라고 한다. 반대의 과정(암호문을 다시 읽을 수 있는 평문으로 전환)을 복호화decryption라고 한다. 정보를 암호화하고 복호화하는 방법(암호 함수cipher functions 또는 알고리즘)은 많다.

두 명의 당사자가 통신하려면 다음 두 가지에 동의해야 한다.

  1. 통신에 사용할 알고리즘(암호 함수)
  2. 선택한 방법으로 사용할 매개변수 또는 암호, 규칙(예: 시크릿secret)

암호화에는 두 가지 주요 방법이 있다.

  • 대칭 양쪽 당사자가 공통 비밀 키를 공유한다.
  • 비대칭 당사자 중 한쪽이 비밀 키와 공개 키의 쌍, 공개 키 인프라(PKI) 기반을 갖는다.

 

- 대칭형 방식 : 양쪽 당사자가 공유한 시크릿에 의존하는데, 전송자는 정보를 암호화하는 데 사용하고 수신자는 동일한

  방식과 키를 사용해 복호화한다. 이 방법의 문제는 양쪽 당사자가 서로 물리적인 만남 없이 시크릿을 협상(교환)하는 방법

  이라서 일종의 보안 통신 채널이 필요하다.

대칭 방식

- 비대칭 방식 : 대칭 방식의 문제를 해결한다. 두 가지 키 중 하나로 평문을 암호화하면 다른 보완 키를 사용해야만 복호화

  할 수 있다.

비대칭 방식

 

2. 무결성

HTTPS로 해결하는 또 다른 문제는 데이터 무결성integrity이다. 즉, (1)전체 정보가 잘 도착했으며, (2)전송 중에 누가 변조하지 않았음을 보장한다. 정보가 잘 전송되었음을 보장하기 위해 메시지 다이제스트message digest 알고리즘을 사용한다. 교환된 각 메시지의 메시지 인증 코드message authentication codes, MAC 계산은 암호화 해싱 프로세스다. 예를 들어 MAC(태그라고도 한다) 획득은 실질적으로 다음의 작업이 불가능(보통 사용하는 용어는 ‘실행 불가능infeasible’)하게 하는 방식이다.

  • 태그에 영향을 끼치지 않고 메시지 변경하기
  • 두 개의 다른 메시지에 동일한 태그 생성하기
  • 프로세스를 거꾸로 돌려 태그에서 원래 메시지 획득하기

 

3. 인증

인증authentication은 어떨까? 공개 키 인프라의 실제 애플리케이션이 갖는 문제는 양쪽 당사자가 (물리적으로 떨어져 있는) 상대편이 실제로 누구인지 알 방법이 없다는 것이다. 그래서 상대편의 신원을 보증하기 위해 상호 신뢰할 수 있는 제3자, 즉 인증 기관certificate authority, CA이 필수다. 인증 기관은 example.com이라는 도메인 이름(고유한 식별자)이 공개 키 XXX와 연결되어 있음을 기술한 인증서를 발행한다. 경우에 따라서는(조금 뒤 설명하는 EV와 OV 인증서) 인증 기관은 그 도메인을 특정 회사가 통제하는지도 확인한다. 이 정보는 인증 기관 X(인증서 발행)에서 보증하고, 이 보증은 날짜 Y(시작일)와 날짜 Z(만료일)사이에서 유효하다. 이 모든 정보는 HTTPS 인증서라는 문서 하나에 들어간다. 이해를 돕기 위해 나라에서 국민에게 발행하는 ID나 여권을 예로 들면, 해당 정부를 신뢰하는 모든 신뢰 당사자는 ID를 가진 사람의 신원 또한 수용한다(가짜 ID인 경우는 이 예의 범위 밖이다).

인증 기관은 인증서를 서명하기 위해 신뢰된 조직이다. 윈도우와 맥OS, iOS, 안드로이드 등의 운영체제뿐만 아니라 파이어폭스 브라우저는 신뢰된 인증서 목록을 갖고 있다. 사용하는 브라우저에서 신뢰하는 인증 기관을 확인할 수 있다.

  • 파이어폭스 설정 → 개인 정보 및 보안 → 인증서 → 인증서 보기 → 인증 기관
  • 윈도우 제어판 → 인터넷 옵션 → 내용 → 인증서 → 신뢰할 수 있는 인증 기관/중간 인증 기관
  •  응용 프로그램 → 유틸리티 → 키체인 접근 → 카테고리 내 인증서

 

HTTPS 인증서 유형

1. 신원 검증

  1. DV(Domain validated) 가장 일반적인 유형의 인증서인 DV 인증서는 도메인이 특정 공개 키와 일치하는지 확인한다. 브라우저는 서버와 보안 연결을 수립하고 닫힌 자물쇠를 표시한다. 이 표시를 클릭하면 ‘현재 웹사이트는 소유자 정보를 제공하지 않고 있습니다’를 보여준다. 도메인 외의 다른 특별한 요구 사항은 없다. DV 인증서는 해당 도메인에 대한 알맞은 공개 키인지를 간단히 확인하며, 브라우저에서는 법적 신원을 보여주지는 않는다. DV 인증서는 무료이거나 저렴(10달러/년)하다.
  1. EV(Extended validation) EV 인증서는 웹사이트의 법적 신분을 검증한다. EV 인증서는 가장 신뢰할 수 있는 유형의 인증서다. 인증 기관에서 도메인을 관리하는 이의  법적 신원을 확인한 후 얻을 수 있다. 법적 신원은 다음의 조합으로 확인한다.
  • 도메인 관리(예: DV 인증서)
  • 회사가 등록되었고 현재 유지 상태인지 확인할 수 있는 공인된 사업 기록
  • D&B(Dunn and Bradstreet), 세일즈포스 connect.data.com, 전화번호부 등에 등재된 자영업 정보
  • 확인 전화
  • 인증서의 모든 도메인 이름 검사(와일드카드는 EV 인증서에서 명시적으로 금지). 닫힌 자물쇠 표시뿐만 아니라 EV HTTPS 인증서는 URL 앞에 검증된 법적 신원의 이름(등록된 회사)을 표시한다. iOS 사파리와 같은 일부 기기는 검증된 법적 신원만 표시하고 전체 URL은 무시한다. 해당 표시를 클릭하면 이름과 주소 같은 조직에 대한 자세한 정보를 보여준다. 비용은 연간 150달러에서 300달러 정도다.
  1. OV(Organization validated) EV처럼 OV 인증서는 웹사이트의 법적 신분을 검증한다. 하지만 EV 인증서와 달리 OV HTTPS 인증서는 UI에서 확인된 법적 이름을 표시하지는 않는다. 결과적으로 OV 인증서는 높은 검증 요구 사항 대비 사용자에게 보여주는 이점이 없기 때문에 인기가 덜하다. 가격은 연 40달러에서 100달러 정도다.

2. 다루는 도메인 수

   1. 단일 도메인 가장 흔한 인증서 유형으로 example.com과 www.example.com와 같은 도메인 이름에 유효하다.

 

   2. 다중 도메인(UCC/SAN) UCCUnified Communications Certificate 또는 SAN 인증서로 알려진 인증서 유형으로 도메인의 목록을 다룰 수 있다(지정된 제한까지). 단일 도메인에 대한 제한은 없으며 다른 도메인과 하위 도메인을 혼합할 수 있다. 가격은 보통 정해진 도메인의 수(3~5개)에 추가 비용을 지불하면 더 많이(최대 한도까지) 포함할 수 있는 옵션을 제공한다. 웹사이트의 인증서를 검사하는 클라이언트는 주 도메인뿐만 아니라 모든 추가 도메인을 확인하기 때문에 웹사이트와 관련된 도메인 사용을 권장한다.

 

   3.와일드카드 이 유형의 인증서는 주 도메인뿐만 아니라 하위 도메인(*.example.com)의 수를 제한 없이 다룬다(예: example.com, www.example.com, mail.example.com, ftp.example.com 등). 제한 사항은 주 도메인의 하위 도메인만 다룬다는 점이다.

인증서 유형 DV(Domain validated) EV(Extended validation) OV(Organization validated)
HTTPS HTTPS에서 법적 소유자 검증 HTTPS 검증 법적 소유자
정보가 브라우저에 표시
단일 도메인 example.com, www.example.com  등등
다중 도메인 mail.example.comexample.netexample.org 등. 사전 정의된 목록, 지정된 최대 제한까지
(보통100)
와일드 카드 *.example.com는 example.com의 모든 하위 도메인을 뜻한다.

 

 

대표적인 인증서 Let's Encrypt

1. 등장배경

기존의 HTTPS 도입을 위해서는 SSL 인증서를 구매하고, 인증기관(CA)에 등록하며 이를 일정 주기마다 갱신해야 했기 때문에, 만만치 않은 비용이 들었다. 이러한 문제로 인해 HTTPS의 보편화에 방해가 된다고 판단이 되어 만들어 졌습니다.

이에 따라 웹사이트의 HTTPS 도입을 보편화하고자 모질라, 시스코, 구글, 페이스북 등의 다양한 업체가 Let's Encrypt의 스폰서로 등록되어있다.

 

Let’s Encrypt는 미국의 ISRG(Internet Security Research Group)가 운영하는 무료 SSL인증 서명 및 발행하는 기관이다.

무료이며 자동화된 공개 인증 기관이다. 공공의 이익(비영리)을 위해 운영된다. Let’s Encrypt는 Internet Security Research Group(ISRG)에서 제공하는 서비스다.

 

아래의 내용은 Let's Encrypt 웹사이트에 나와있는 내용이다.

 

Let’s Encrypt의 핵심 원칙은 다음과 같다.

  • 무료 도메인 이름을 소유한 누구나 Let’s Encrypt를 사용해 무료로 신뢰된 인증서를 얻을 수 있다.
  • 자동 웹 서버에서 실행 중인 소프트웨어는 Let’s Encrypt와 상호작용해 어려움 없이 인증서를 사용할 수 있도록 안전하게 구성할 수 있으며 자동으로 갱신한다.
  • 보안 Let’s Encrypt는 CA와 웹사이트 운영자 모두 서버를 안전하게 운영하도록 도움으로써 보안 TLS 보안 모범 사례를 제공하는 플랫폼 역할을 한다.
  • 투명 발행되고 폐기된 모든 인증서는 기록이 공개되어 누구나 확인할 수 있다.
  • 공개 다른 곳에서도 적용할 수 있도록 자동 발행과 갱신 프로토콜을 공개 표준으로 게시한다.
  • 공공성 기본 인터넷 프로토콜처럼 Let’s Encrypt는 공동체 이익을 위한 공동 노력의 산물로 어떤 조직도 통제하지 못한다.

동작 방식

Let’s Encrypt와 다른 CA 사이의 동작 모드에는 일부 상당한 차이가 있다. 앞서 설명한 원칙 중 첫 세 가지(무료, 자동, 보안)가 중요한 차이점이다.

  • 무료 Let’s Encrypt HTTPS의 인증서는 웹사이트 전체 수명 동안 완전히 무료다.
  • 자동 Let’s Encrypt HTTPS 인증서는 1년의 유효기간을 갖는 보통의 HTTPS 인증서와 달리 유효기간이 90일이다. 인증서 갱신 자동화를 권장한다. 예를 들어, 서버 관리자는 전용 소프트웨어 서비스를 설정(또는 cron에서 소프트웨어를 주기적으로 호출)해 모든 호스팅 도메인에 초기 도메인 검증과 후속 갱신을 관리한다. 한 번 설정하고 잊어버리는 스타일을 추구하는 것이다.
  • 보안 Let’s Encrypt HTTPS 인증서는 보안을 약화시키지 않고 발행되므로 오래되고 더 이질적인 플랫폼과 호환성에 문제를 야기한다. 호환성 페이지를 검토해 호환되지 않는 플랫폼을 제외했는지 확인하자

한계

Let’s Encrypt는 DV 인증서만 제공한다. OV와 EV는 지원하지 않으며 앞으로도 지원 계획은 없다. 단일 도메인이나 멀티 도메인 HTTPS 인증서는 제공하지만 와일드카드 인증서는 제공하지 않는다. 더 자세한 정보는 Let’s Encrypt FAQ에서 확인할 수 있다.

 

봇 프로그램

Let’s Encrypt 인증서를 자동으로 발급 및 갱신을 해주는 봇 프로그램으로 Certbot이 있다.

 

Certbot은 무료이면서 자동으로 SSL인증서를 발행할수 있는 툴입니다. CSR과 KEY파일 작성부터 웹서버 설정까지 자동으로 처리할 수 있습니다. CRON을 사용하면, 인증서의 갱신작업까지도 완전히 자동화가 가능합니다. 인증서의 서명과 발행은 Let’s Encrypt의해 처리된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://galid1.tistory.com/602

https://webactually.com/2018/11/16/http%EC%97%90%EC%84%9C-https%EB%A1%9C-%EC%A0%84%ED%99%98%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C/

https://webactually.com/2018/11/16/http%EC%97%90%EC%84%9C-https%EB%A1%9C-%EC%A0%84%ED%99%98%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C/

728x90
반응형
LIST