HTTPS도 파보자

우노·2024년 6월 30일
0

CS

목록 보기
3/5
post-custom-banner

HTTPS (Hypertext Transfer Protocol Secure)

HTTP의 문제

HTTP 통신 - 브라우저 ↔ 서버가 평문(일반 텍스트)로 정보 교환
→ 중간에 누군가 통신 중에 데이터를 가로챈다면…!? = 스니핑(Sniffing)
→ 🚨 보안 이슈 발생

⇒ HTTP에서 보안을 강화한 확장 HTTPS 등장!

HTTPS = HTTP/1.1 + TLS

HTTPS는 HTTP/1.1을 사용하면서 데이터 전송 전에
네트워크 보안 프로토콜인 TLS를 사용하는 법이라고 이해할 수 있습니다.

데이터 전송 전에 안전하고 암호화된 연결을 생성!
→ 모든 요청과 응답을 TLS에 따라 암호화

⇒ 중간에 누군가 가로채더라도 데이터를 노출시키지 않음
= 카드 정보와 비밀번호 등과 같은 민감한 정보 보호

SSL/TLS

SSL = 보안 소켓 계층(Secure Sockets Layer, SSL) - 암호화 기반 인터넷 보안 프로토콜
→ (1999년) TLS = 전송 계층 보안(Transport Layer Security)

🌐 인터넷 트래픽을 암호화하고 서버 신원을 확인하기 위한 프로토콜

  • 암호화
  • 인증
  • 데이터 무결성

SSL/TLS 암호화 과정 요약

  1. 지원 가능한 알고리즘(RSA 등) 서로 교환
  2. 키 교환, 인증
  3. 대칭키 암호로 암호화하고 메시지 인증

TLS 인증서

SSL/TLS는 TLS 인증서가 있는 웹사이트만 실행할 수 있습니다.
CA(Certificate Authority; 인증 기관)가 TLS 인증서 발행을 담당합니다.

TLS 인증서
= 웹사이트나 애플리케이션 서버가 웹에 저장하고 표시하는 일종의 신분증

TLS 인증서에 포함된 내용

  • 인증서가 발급된 대상 도메인 이름
  • 발급받은 사람, 조직, 장치
  • 발급한 인증 기관
  • 인증 기관의 디지털 서명
  • 관련 하위 도메인
  • 인증서 발급 날짜
  • 인증서 만료 날짜
  • 공개 키(개인 키는 비밀로 유지됨)

발급 가능 도메인 범위

  • 단일 도메인
  • 와일드카드 (하나의 도메인 + 하위 도메인)
  • 멀티 도메인

도메인 유효성 검사 - 도메인 관리만 증명
실무적인 프로세스 - CA가 담당자에게 문의
확장 유효성 검사 - 사용자 검증 후 발행

인증서 확인해보기

네이버로 가봅시당 따란

SSL/TLS 세부 과정

TLS 인증서 발급 과정

  1. 웹 사이트에서 공개키 - 개인키 쌍을 생성한다.
  2. 웹 사이트의 정보와 공개키를 바탕으로 서명 요청서(CSR)을 작성하여 CA에게 보낸다.
  3. CA는 웹 사이트의 공개키를 해시 후 CA의 개인키로 암호화해서 디지털 서명을 만든다.
  4. 웹 사이트 정보와 디지털 서명 정보를 포함하는 인증서를 웹 사이트에게 발급해준다.

TLS 인증 암호화 과정 = TLS 핸드쉐이크

  • 비대칭 암호화
  1. 핸드쉐이크 개시: 클라이언트의 최초 서버 연결 시도
    클라이언트가 지원하는 TLS 버전, 지원되는 암호 제품군, 그리고 "클라이언트 무작위"라고 하는 무작위 바이트 문자열 포함
  2. 핸드쉐이크 응답: 서버는 클라이언트에 응답으로 SSL 인증서와 서버에서 선택한 암호 제품군, 그리고 서버에서 생성한 또 다른 무작위 바이트 문자열인 "서버 무작위"를 포함하는 메시지 전송
  3. 인증: 클라이언트가 받은 SSL 인증서를 CA를 통해 검증
  4. 예비 마스터 암호: 클라이언트가 공개키로 암호화한 “예비 마스터 암호” 무작위 바이트열 하나 더 전송
  5. 개인키 사용: 클라이언트가 보낸 예비 마스터 암호는 서버의 개인키로만 복호화 가능
  6. 세션키 생성: 클라이언트와 서버가 모두 클라이언트 무작위, 서버 무작위, 예비 마스터 암호를 이용해 세션키를 생성 → 둘이 같은 결과 도출

  • 대칭 암호화
  1. 클라이언트 준비 완료: 클라이언트가 세션키로 암호화된 “완료” 메시지 전송
  2. 서버 준비 완료: 서버가 세션키로 암호화된 “완료” 메시지 전송
  3. 대칭 암호화 성공: 핸드쉐이크 성공 + 세션키 이용 통신 진행

출처: TLS 핸드셰이크란 무엇일까요?

Certbot + Let’s Encrypt

🌐 Certbot is a free, open source software tool for automatically using Let’s Encrypt certificates on manually-administrated websites to enable HTTPS

= 자동으로 간편하게 Let’s Encrypt에 TLS 인증서를 요청하는 오픈소스

Let’s Encrypt = TLS 인증서를 제공하는 비영리 인증 기관 (CA)
Certbot을 활용해서 Let’s Encrypt에 TLS 인증서 요청 !

출처: Cloudflare SSL 관련 문서

profile
기록하는 감자
post-custom-banner

0개의 댓글