X.509 인증서 구조
디지털 인증서 내부의 주체, 발급자, 유효 기간, 공개 키, 확장 필드를 살펴보고 각 항목의 의미를 이해합니다.
X.509 인증서 구조은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
X.509 Certificate란 무엇인가요?
X.509 인증서는 공개 키를 신원에 연결하는 표준화된 Digital 문서입니다. RFC 5280에 정의된 X.509 표준은 전 세계 Digital 인증서에서 사용되는 형식, 필드 및 확장을 지정합니다. 모든 TLS/HTTPS 인증서, S/MIME 이메일 인증서, 코드 서명 인증서 및 Client 인증 인증서는 X.509 형식을 따릅니다. X.509 인증서의 구조를 이해하면 인증서 정보를 읽고, 인증서 오류를 진단하며, 인증서 배포 및 검증에 관해 합리적인 결정을 내리는 데 도움이 됩니다.
# View an X.509 certificate in human-readable form
openssl x509 -in certificate.pem -noout -text
# Or view a website's certificate directly
openssl s_client -connect example.com:443 2>/dev/null | \
openssl x509 -noout -textVersion, Serial Number 및 Algorithm
X.509 인증서의 첫 번째 필드는 기본적인 신원을 설정합니다. Version: X.509 v3은 현재 표준입니다(v3에서 확장이 추가되었습니다). Serial Number: 발급 CA가 할당하는 고유한 정수로, 특정 인증서를 식별하며 CRL(폐기 목록)에서 개별 인증서를 폐기할 때 사용됩니다. Signature Algorithm: CA가 인증서에 서명하는 데 사용한 Algorithm을 지정합니다(예: sha256WithRSAEncryption 또는 ecdsa-with-SHA256). 이 필드는 TBSCertificate와 외부 서명 래퍼에 각각 한 번씩, 총 두 번 나타나며 서로 일치해야 합니다.
# Certificate header fields
# Version: 3 (v3 = supports extensions)
# Serial Number:
# 30:4b:7e:bf:36:e3:46:a8
# Signature Algorithm: sha256WithRSAEncryption
# The serial number is used for revocation:
# CRL lists serial numbers of revoked certificates from this CAIssuer 및 Subject 필드
인증서에서 가장 중요한 두 필드는 관련 당사자를 설정합니다. Issuer 필드는 인증서에 서명한 CA를 식별합니다(예: CN=DigiCert Global CA G2, O=DigiCert Inc, C=US). Subject 필드는 인증서가 발급된 엔터티를 식별합니다(예: CN=*.example.com, O=Example Corp, C=US). TLS 인증서의 경우 Subject의 Common Name (CN) 또는 Subject Alternative Name (SAN) 확장이 인증서가 유효한 도메인 이름을 지정합니다. 브라우저는 요청된 호스트 이름을 이 필드와 비교합니다.
# Extract Issuer and Subject
openssl x509 -in cert.pem -noout -subject -issuer
# subject=CN = *.google.com, O = Google LLC, L = Mountain View, ST = California, C = US
# issuer=CN = GTS CA 1C3, O = Google Trust Services LLC, C = US
# Check Subject Alternative Names (critical for hostname validation)
openssl x509 -in cert.pem -noout -ext subjectAltName
# DNS:*.google.com, DNS:google.com유효 기간: notBefore 및 notAfter
유효 기간은 인증서가 활성 상태인 시점을 정의합니다. 여기에는 두 개의 타임스탬프가 포함됩니다. notBefore는 이 날짜 이전에는 인증서가 아직 유효하지 않음을 나타내고, notAfter는 이 날짜 이후 인증서가 만료됨을 나타냅니다. TLS Client는 현재 시간이 이 범위 안에 있는지 확인합니다. 유효 기간이 아닌 시점에 제시된 인증서는 브라우저에서 인증서 오류를 일으키므로 갱신해야 합니다. 현대적인 모범 사례는 수명이 짧은 인증서(예: Let's Encrypt의 90일 인증서)를 발급하여, 발급 후 만료 전까지 Private 키가 손상되었을 때의 노출을 줄이는 것입니다.
# Check certificate expiry dates
openssl x509 -in cert.pem -noout -dates
# notBefore=Jan 1 00:00:00 2026 GMT
# notAfter=Mar 31 23:59:59 2026 GMT
# Check how many days until expiry
echo | openssl s_client -connect example.com:443 2>/dev/null | \
openssl x509 -noout -enddate
# notAfter=Jun 15 12:00:00 2026 GMT공개 키 필드
인증서의 핵심 데이터는 Subject Public Key Info 필드이며, 여기에는 인증되는 공개 키와 해당 키에 사용되는 Algorithm이 포함됩니다. RSA 인증서의 경우 이 필드에는 RSA 공개 키의 모듈러스와 지수, 그리고 비트 길이(2048, 4096)가 포함됩니다. ECC 인증서의 경우 곡선 이름(예: prime256v1)과 공개 키 포인트가 포함됩니다. CA가 이 키 쌍을 생성하는 것은 아닙니다. 인증서 요청자가 자신의 키 쌍을 생성하고 Certificate Signing Request (CSR)에는 공개 키만 제출합니다.
# Generate a key pair and CSR (Certificate Signing Request)
# First, generate the private key
openssl genrsa -out server.key 2048
# Create a CSR containing the public key and subject info
openssl req -new -key server.key -out server.csr \
-subj '/CN=www.example.com/O=Example Corp/C=US'
# The CSR is sent to the CA for signing
# The CA returns the signed X.509 certificate
# Private key NEVER leaves your possessionX.509 v3 확장
X.509 v3에서는 인증서의 기능을 크게 확장하는 확장이 도입되었습니다. 확장은 중요하거나(이 확장을 처리할 수 없는 Client는 인증서를 거부해야 함) 중요하지 않을 수 있습니다(이해하지 못해도 무시 가능). 주요 확장에는 다음이 있습니다. Subject Alternative Name (SAN) — 인증서가 적용되는 추가 도메인 이름 또는 IP, Key Usage — 키를 사용할 수 있는 작업을 제한( Digital 서명, 키 Encipherment), Extended Key Usage — 용도를 추가로 제한(TLS Server 인증, Client 인증, 코드 서명), Basic Constraints — Subject가 CA인지 나타냄.
# View X.509 v3 extensions
openssl x509 -in cert.pem -noout -text | grep -A 20 'X509v3 extensions'
# X509v3 Key Usage: critical
# Digital Signature, Key Encipherment
# X509v3 Extended Key Usage:
# TLS Web Server Authentication, TLS Web Client Authentication
# X509v3 Subject Alternative Name:
# DNS:example.com, DNS:www.example.com
# X509v3 Basic Constraints: critical
# CA:FALSESubject Alternative Name (SAN)과 Common Name 비교
과거에는 Subject의 Common Name (CN) 필드가 기본 도메인 이름으로 사용되었습니다. 현대적인 인증서는 대신 Subject Alternative Names (SANs)를 사용합니다. 브라우저가 CN 기반 일치(RFC 2818)를 폐기하고 SAN을 사용하기 때문입니다. SAN을 사용하면 하나의 인증서로 여러 도메인(다중 SAN 인증서) 또는 한 도메인의 모든 하위 도메인(와일드카드 인증서: *.example.com)을 보호할 수 있습니다. SAN 와일드카드는 한 단계만 포함하므로 *.example.com은 www.example.com에는 적용되지만 sub.www.example.com에는 적용되지 않습니다.
CRL Distribution Point 및 OCSP 확장
두 가지 중요한 확장은 인증서가 만료되기 전에 폐기되었는지 확인하는 방법을 Client에 알려 줍니다. CRL Distribution Points (CDP): CA의 Certificate Revocation List를 Download할 수 있는 URL을 포함합니다. Authority Information Access (AIA): 실시간 폐기 확인을 위한 CA의 OCSP (Online Certificate Status Protocol) 응답자의 URL을 포함합니다. CRL은 대용량 파일일 수 있으므로 현대적인 Client는 CRL Download보다 OCSP를 선호합니다. OCSP Response에 포함된 CA의 Digital 서명은 Client가 진본인 폐기 상태 정보를 받도록 보장합니다.
# Check OCSP status of a certificate
openssl ocsp -issuer intermediate_ca.pem \
-cert server_cert.pem \
-url http://ocsp.digicert.com \
-text
# Response shows: good, revoked, or unknown
# server_cert.pem: good
# This Update: Jun 21 00:00:00 2026 GMTCertificate 형식: PEM, DER, PFX
X.509 인증서는 실제 환경에서 접하게 될 여러 인코딩 형식으로 제공됩니다. PEM (Privacy Enhanced Mail): DER을 base64로 인코딩하고 -----BEGIN CERTIFICATE----- 헤더로 감싼 형식입니다. 사람이 읽을 수 있으며 Linux/Apache/nginx에서 사용됩니다. DER (Distinguished Encoding Rules): 바이너리 형식입니다. Java 애플리케이션과 일부 Windows 환경에서 사용됩니다. PFX/PKCS#12: 인증서, 해당 체인 및 Private 키를 하나의 비밀번호로 보호되는 파일에 묶는 컨테이너 형식입니다. Windows IIS에서, 또는 Private 키와 함께 인증서를 Export할 때 사용됩니다. P7B/PKCS#7: Private 키 없이 인증서 체인만 포함하며 Windows 인증서 저장소에서 사용됩니다.
# Convert between certificate formats
# PEM to DER
openssl x509 -in cert.pem -outform DER -out cert.der
# DER to PEM
openssl x509 -in cert.der -inform DER -outform PEM -out cert.pem
# Export certificate + private key to PFX (for Windows IIS)
openssl pkcs12 -export -in cert.pem -inkey private.key \
-certfile chain.pem -out cert.pfx -passout pass:ExportPasswordCertificate Transparency (CT Logs)
Certificate Transparency (CT)는 CA가 발급한 모든 인증서를 공개적으로 감사할 수 있는 Log에 기록하도록 요구하는 프레임워크입니다. 이를 통해 누구나 자신의 도메인에 대해 무단으로 발급된 인증서를 감시할 수 있습니다. Chrome과 Safari는 TLS 인증서에 대해 CT Log 포함을 요구합니다. SCT (Signed Certificate Timestamp)는 Log에 포함되었다는 증거이며, 인증서에 포함되거나 TLS 확장을 통해 전달됩니다. CT Log는 잘못된 발급을 신속하게 드러냅니다. CA가 사용자의 도메인에 대해 인증서를 잘못 발급하면 공격자가 악용하기 전에 crt.sh와 같은 Log에서 확인할 수 있습니다.
# Search for all certificates issued for a domain using crt.sh
# This would be done via browser or API:
# https://crt.sh/?q=example.com
# Check CT log inclusion in a certificate
openssl x509 -in cert.pem -noout -text | grep -A 5 'CT Precertificate'
# X509v3 extension: CT Precertificate SCTs (critical)
# Signed Certificate Timestamp:
# Version: v1 (0x0)
# Log ID: A4:B9...인증서에 대한 CA Signature
X.509 인증서의 마지막 구성 요소는 CA의 Digital 서명입니다. CA는 모든 인증서 데이터(TBSCertificate)를 해시한 다음 자체 Private 키로 해당 해시에 서명합니다. 이 서명 때문에 인증서를 신뢰할 수 있으며, 누구나 CA의 공개 키(CA 자체 인증서에서 확인 가능)를 사용해 이를 검증할 수 있습니다. 사용된 Signature Algorithm(서명 필드에 표시됨)은 인증서 앞부분에 지정된 내용과 일치해야 합니다. 서명 후 인증서가 조금이라도 수정되면 서명이 무효화되므로 인증서의 무결성이 보장됩니다.
# Verify that a certificate was signed by a specific CA
openssl verify -CAfile ca_chain.pem server_cert.pem
# server_cert.pem: OK
# If the signature is invalid or the chain is broken:
# server_cert.pem: C = US, O = Example, CN = www.example.com
# error 20 at 0 depth lookup: unable to get local issuer certificate빠른 확인
이 레슨에서 다룬 CompTIA Security+ (SY0-701) 개념에 대한 이해도를 확인해 보세요.
레슨 요약
이 레슨에서는 다음을 배웠습니다. X.509 인증서에는 version, serial number, issuer, subject, validity period, public key 및 v3 확장이 포함됩니다. SAN 확장은 인증서가 적용되는 호스트 이름을 제어하고, CDP 및 AIA 확장은 폐기 확인 엔드포인트를 가리키며, CT Log는 인증서 발급에 대한 공개 감사 추적을 제공합니다. 다음으로는 Certificate 수명 주기 및 폐기를 살펴보겠습니다.
자주 묻는 질문
“X.509 인증서 구조” 강의는 무료인가요?
네 — “X.509 인증서 구조” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
“X.509 인증서 구조”에서 뭘 배우나요?
디지털 인증서 내부의 주체, 발급자, 유효 기간, 공개 키, 확장 필드를 살펴보고 각 항목의 의미를 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“X.509 인증서 구조” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.