CS

SSL 인증서 체인이란?

서머스 2025. 1. 18. 19:01

이번에 우리 시스템 SSL 인증서 교체 작업을 하면서 SSL에 대한 개념을 좀 더 공부해야겠다 싶어 찾아보았다.

 

예전에 취준하면서 HTTP와 HTTPs에 대해서 공부한 적이 있는데 이 내용으로는 좀 부족하다는 생각이 들었다.

https://garysummers.tistory.com/129

 

HTTP와 HTTPS

HTTP - HyperText Transfer Protocol - 웹 페이지를 보내고 받기 위한 인터넷 기반 프로토콜 - 애플리케이션 레벨의 프로토콜로, TCP/IP 위에서 작동한다. - 80번 포트를 사용한다. HTTP 요청 메서드(HTTP 동사) GE

garysummers.tistory.com

 

 

SSL이란?

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

쉽게 말해 SSL는 HTTPS를 사용하려 암호화를 하고 인터넷을 안전하게 사용하기 위해서이다.

SSL 인증서를 통해 SSL/TLS 암호화가 가능하다.

 

 

SSL 인증서는 체인 방식으로 이루어져 있다.

인증서를 체인으로 연결하는 이유는, 공개 키 기반 구조(PKI)의 인증 기관(CA) 간의 신뢰를 구축하기 위해서이다.

 

위부터 차례로

SSL 인증서, 서버 인증서(End Entity Certificate), (이 인증서 이름은 명명하는 게 조금씩 다른 것 같다)

중간 인증서(Intermediate Certificate),

루트 인증서(Root Certificate)이다.

 

3개의 인증서가 하위 구조의 인증서를 서명하고, 상위 구조의 인증서를 참고하는 방식으로 체인이 구성되며, 인증서 체인은 SSL 연결에 필수적이다.

체인이 정상적으로 되지 않으면 '이 인증서를 신뢰할 수 없음' 오류가 발생한다.

 

참고한다는 것은, SSL 인증서가 신뢰할 수 있는지 확인하기 위해 브라우저나 클라이언트가 상위 인증서를 확인하면서 신뢰 경로(chain of trust)를 만든다는 것을 의미한다.

예를 들어, 서버가 google.com에 접속하게 되면 클라이언트가 이 인증서를 신뢰할 수 있는지 판단하기 위해

  • 중간 인증서를 참고하고,
  • 그 중간 인증서의 발급자(Root CA)를  참고한다.

 

인증서 안에는 도메인 이름, 만료일, 발급자, 공개 키 등의 정보가 있고,

서버나 클라이언트는 이를 참고해서 도메인 일치 여부나 유효 기간, 서명자 정보, 사용 목적 등을 판단해 유효성을 검토한다.

 

서명한다는 것은, 특정 데이터에 디지털 서명을 해서 그 데이터가 위조되지 않았음을 증명하는 것이다.

서명을 하기 위해선 CA(인증기관)에서 개인 키(private key)로 암호화해서 서명한다.

그리고 클라이언트(브라우저)는 CA의 공개키(public key)로 복호화해서 이 서명의 유효성을 확인한다.

 

마치 상사가 내 문서에 대해 결재하듯, 상위 인증서가 이 인증서가 유효하다고 서명해 인증해주는 것이다.

 

 

 

서버 인증서

  • *.example.com 
  • 특정 도메인에 대한 인증서이다.
  • 하나의 인증서로 여러 하위 도메인을 HTTPS로 보호할 수 있다.
  • 서버에 설치되어야 한다.
  • .pem or .crt 파일로 존재한다.

 

중간 인증서

  • 체인 인증서라고도 불린다.
  • 1개 이상 있을 수도 있다.
  • 서버에 설치되어야 한다.

 

루트 인증서

  • 클라이언트(브라우저/OS)에 미리 신뢰된 상태로 저장된다.
  • CA에 의해 서명된 공인 인증서를 쓰는 것과 달리 자체 서명한 사설 인증서를 쓰면 루트 인증서를 클라이언트에 설치해줘야 한다.
fullchain.pem
├── example.com (서버 인증서)
└── Intermediate CA 1

example.com.crt, cert.pem, server.pem -> 도메인에 대한 인증서

fullchain.pem -> 서버 인증서 + 중간 인증서를 연결한 파일

.key -> 비공개 키, 개인 키. 서버 인증서와 1:1로 연결된다.

 

 

구글 HTTPS

구글도 HTTPS로 되어있는 것을 확인할  수 있다.

 

이렇게 GTS > WE2 > *.google.com 으로 되어있는 것이 각각 Root 인증서, 중간 인증서, 서버 인증서이다.

 

 

서버 인증서가 서명되기 위해선 인증 기관(CA)에 공개키, 정보를 담은 인증요청서(CSR)를 보내야 한다.

 

 

 

 

 

 

[참고]

https://my.f5.com/s/article/K41280190

 

Understanding the SSL Certificate Chain

TopicA certificate chain acts to establish trusts between Certificate Authorities (CAs) of a Public Key Infrastructure (PKI). The trust sets the hierarchical roles and relationships between the root CA, the intermediate CA, and the issued SSL certificates

my.f5.com

 

https://keima.tistory.com/entry/SSL%EA%B3%BC-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EA%B5%AC%EC%A1%B0

 

SSL과 인증서 구조

1. 인증서 체인ROOT, Intermediate(중간인증서), Leaf(서버 인증서) 3단계로 구성된 구성을 인증서 체인(Certificate chain)이라고 한다. 이 3개의 인증서 체인은 하위 구조의 인증서를 서명하고 상위 구조의

keima.tistory.com

https://www.cloudflare.com/ko-kr/learning/ssl/what-is-an-ssl-certificate/

 

https://binwrite.com/ssl-certificate-chain/

 

SSL 인증서 체인 이해하기 – 엔지니어의 기록

SSL 인증서는 서버 인증서 > 중간 인증서 > 루트 인증서 순으로 이어지는 연결 고리를 가지고 있는데 이를 인증서 체인이라고 한다. SSL 통신 과정에서 인증서 체인이 정상적으로 확인되어야 최종

binwrite.com

 

 

 

 

'CS' 카테고리의 다른 글

Base64란?  (1) 2024.09.27
Graph  (0) 2022.10.08
HTTP와 HTTPS  (0) 2022.10.08
Network 기본  (0) 2022.10.07
Hash Table  (0) 2022.10.01