728x90

X.509 인증서란

 

X.509 인증서는 공개키 기반 구조(PKI, Public Key Infrastructure)에서 사용되는 표준화된 인증서 형식입니다. 주로 SSL/TLS, 전자서명, 암호화 이메일, VPN 등에서 신원 확인데이터 암호화를 위해 사용됩니다.

핵심 목적은:

  • 공개키가 특정 엔티티(예: 사용자, 서버, 조직)에 속함을 증명
  • 제3자(CA, 인증기관)를 통해 그 신뢰성을 보증

 

즉, 클라이언트가 서버에 연결할 때, 서버가 제공하는 X.509 인증서를 통해 서버의 신원을 확인하고, 교환하는 공개키가 신뢰할 수 있는지를 검증합니다.

 

X.509 인증서의 구조

인증서는 ASN.1 (Abstract Syntax Notation One)로 정의되고 DER 또는 PEM 형식으로 인코딩됩니다. 주요 필드는 아래와 같습니다:

 

1. 기본 필드

필드명 설명
Version 인증서 버전(v1, v2, v3)
현재 v3가 표준
Serial Number CA가 발생한 고유 인증서 일련번호
Signature Algorithm 인증서 서명에 사용된 알고리즘
(예 : SHA256withRSA)
Issuer 인증서를 발행한 기관(CA)이름
Validity Period 인증서의 유효기간
(Not Before ~ Not After)
Subject 인증서 소유자
(예: 도메인, 사용자, 조직)
Subject Public Key Info 공개키 정보 및 알고리즘
(예: RSA, ECDSA)

 


2. 서명 필드

필드명 설명
Signature CA가 인증서 내용에 대해 생성한 디지털 서명
Signature Algorithm 서명 생성에 사용된 알고리즘(위와 동일)



이 서명을 통해 클라이언트는 인증서의 위조 여부를 검증할 수 있습니다.

 

3.  확장 필드 (v3 Extensions)


버전 3에서 확장 필드를 통해 다양한 기능이 추가됩니다:

 

확장 필드 설명
Key Usage 공개키 사용 목적
(예 : Digital Signature, Key Encipherment)
Extended Key Usage 추가용도
(예: TLS 서버 인증, 클라이언트인증, 코드 서명)
Subject Alternative Name(SAN) 추가 식별자
(예: 여러 도메인 이름, 이메일, IP 주소)
Basic Constraints CA 여부(CA인증서인지 여부와 경로 길이 제한)
CRL Distribution Point 인증서 폐기 목록(CRL)위치
Authority Key Identifier 상위 CA의 키 식별자
Subject Key Identifier 이 인증서의 키 식별자

 

CRL(Certificate Revocation List)란?
CRL은 더 이상 유효하지 않은 인증서 목록입니다.
CA(인증기관)가 발급한 인증서 중에서 특정 이유로 폐기(revoke)된 것들을 기록하고,
신뢰할 수 없는 인증서를 식별하기 위해 배포하는 리스트입니다.

 

 

인증서 예시 (PEM 형식)

-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAKP3...
-----END CERTIFICATE-----
이 파일을 base64로 디코딩하면 ASN.1로 인코딩된 바이너리 데이터가 나오고, 각 필드가 순서대로 들어 있습니다.

 

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            12:34:56:78:9a:bc:de:f0:12:34:56:78:9a:bc:de:f0
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=Example CA, CN=Example Root CA
        Validity
            Not Before: May  1 00:00:00 2025 GMT
            Not After : May  1 23:59:59 2026 GMT
        Subject: C=US, O=Example Corp, CN=www.example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:b1:23:45:67:89:ab:cd:ef:01:23:45:67:89:ab:
                    cd:ef:01:23:45:67:89:ab:cd:ef:01:23:45:67:89:
                    ab:cd:ef:01:23:45:67:89:ab:cd:ef:01:23:45:67:
                    89:ab:cd:ef:01:23:45:67:89:ab:cd:ef:01:23:45:
                    ...
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Subject Alternative Name:
                DNS:www.example.com, DNS:example.com
            Authority Information Access:
                OCSP - URI:http://ocsp.exampleca.com
                CA Issuers - URI:http://crt.exampleca.com/ExampleCA.crt
            X509v3 Authority Key Identifier:
                keyid:12:34:56:78:9A:BC:DE:F0:12:34:56:78:9A:BC:DE:F0
            X509v3 Subject Key Identifier:
                12:34:56:78:9A:BC:DE:F0:12:34:56:78:9A:BC:DE:F0
    Signature Algorithm: sha256WithRSAEncryption
         a1:b2:c3:d4:e5:f6:01:23:45:67:89:ab:cd:ef:01:23:
         45:67:89:ab:cd:ef:01:23:45:67:89:ab:cd:ef:01:23:
         ...

 

PEM과 DER 형식 인증서의 차이

구분 PEM DER
형식 Base64로 인코딩된 텍스트 + 헤더/푸터 포함 바이너리(순수 ASN.1 인코딩)
확장자 .pem, .crt, .cer .der,  .cer
사용 예 주로 웹서버, 텍스트 기반 시스템 주로 Windows, Java 시스템, 바이너리 처리
내용 Base64 디코딩하면 DER 내용과 동일 DER 바이너리 자체

 


X.509 신뢰 체계

  • 루트 CA → 중간 CA → 최종 엔티티 인증서로 이어지는 체인이 있습니다.
  • 클라이언트(예: 브라우저)는 루트 CA의 공개키를 신뢰하고, 그로부터 서명된 하위 인증서를 따라 내려오며 최종 서버 인증서까지 신뢰성을 검증합니다.

 

 

OpenSSL을 사용한 인증서 생성 방법

 

1. 개인키 생성

openssl genrsa -out server.key 2048

 

2. CSR(Certificate Signing Request) 생성

openssl req -new -key server.key -out server.csr

 

실행하면 여러 질문이 발생합니다.

  • Country Name(국가코드, 예: KR)
  • State or Province Name(도/시)
  • Locality Name(구/군)
  • Organization Name(회사명)
  • Organizational Unit Name(부서)
  • Common Name(도메인 명, 예: www.example.com)
  • Email Address

 

3. 인증서 발급

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

 

3-1 (선택) CA를 통한 서명

  • CA용 개인 키 및 자체 서명 루트 인증서 생성
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt

 

  • CA가 CSR을 서명
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha256

 

 

4. 인증서 확인(PEM)

openssl x509 -in server.crt -outform DER -out server.der

 

4-1 DER 인증서인 경우

openssl x509 -in server.der -inform DER -text -noout
728x90

+ Recent posts