1. 디지털 인증서란 무엇인가?
과할지 모르겠지만 개인적으로는 "PKI 시스템의 꽃은 인증서"라고 표현하고 싶다. 공개키 기반 구조(PKI, Public Key Infrastructure)는 디지털 세계에서 신뢰를 구축해야 하는 시스템이며, PKI 시스템에서 보안과 신뢰를 꽃피우는 역할을 인증서가 수행하기 때문이다.
PKI의 구성요소인 디지털 인증서(Digital Certificate)는 온라인상에서 개인, 조직 혹은 서버의 신원을 보장하는 중요한 수단이 된다. 우리가 사용하는 인터넷에서 안전한 통신을 가능하게 하고, 민감한 정보가 안전하게 전달될 수 있도록 하는 것도 인증서 덕분이다. 인증서가 존재하지 않는다면 온라인상에서 누구도 서로의 신원을 확인할 수 없게 되고 보안은 무너지게 된다.
이번 글에서는 디지털 인증서에 대해 이해할 수 있도록 전반적인 기초내용에 대해 다룬다.
2. 디지털 인증서의 정의와 역할
인증서는 디지털 세계에서 신원을 증명하는 전자 문서이다. 온라인상에서 사용자나 시스템의 신뢰성을 보장하는 중요한 도구로 사용된다. 인증서는 공개 키 암호 방식(Public Key Cryptography)을 기반으로 하여 개인, 서버, 장치 등이 본인임을 주장하는 신원을 증명하는 수단으로써 기능을 제공한다.
인증서의 발급을 간단하게 요약하면 다음과 같다. 사용자는 인증서를 발급받기 전 등록 기관(RA, Registration Authority)으로부터 사용자 신원을 확인받아야 한다. 신원이 확인되지 않는 사용자는 인증 기관(CA, Certificate Authority)에 등록될 수 없고 인증서를 발급받을 수 없다.
그러므로 인증서는 온라인상에서 자신의 신원을 증명하는 전자 문서라고 말할 수 있다.
3. X.509와 ASN.1의 개념
다른 방식으로 인증서 개념을 설명하겠다. PKI 시스템의 주축이 되는 공개 키 암호화 방식의 기본 개념은 다음과 같다.
키 쌍(Key Pair) 생성 시, 수학적으로 연결된 공개 키(Public Key)와 개인 키(Private Key)가 만들어진다.
이렇게 만들어진 공개 키(Public Key)는 누구에게나 공개되어 사용된다.
하지만 개인 키(Private Key)는 자신만이 보관하여 밖으로 유출되지 않도록 조치한다.
이렇게 생성한 공개 키와 개인 키로 암호화 혹은 서명을 수행할 수 있다.
위의 개념을 충실히 실행하려면 공개 키를 LDAP 서버 혹은 웹 서버에 업로드해야 한다. 그러려면 공개 키가 누구의 것인지 구분을 해야 하고 어느 인증 기관을 통하여 발급된 것인지 등 다양한 정보를 필요로 한다. 그래서 공개 키 외의 필요로 하는 정보를 한데 묶는 방식을 정의한 것이 'X.509 형식의 인증서'라고 부른다.
정리하여 다시 말하면, 'X.509 형식의 인증서'는 공개 키를 포함하여 인증서에 어떤 정보가 담겨야 하는지에 대한 ITU-T 표준이라고 말할 수 있다. 이 표준은 디지털 인증서가 어떤 필드에 어떤 데이터를 포함해야 하며, 이를 통해 PKI 신뢰 체계를 어떻게 구성할 수 있는지에 대한 명확한 지침을 제공하고, 현재 X.509 인증서는 글로벌 표준으로 자리 잡고 있다.
'X.509'가 인증서에 포함되어야 할 필드와 구조를 정의한 설계도라면, 이 설계도를 실제로 구현하기 위해서 필요한 문법이 존재한다. 해당 문법을 'ASN.1'(Abstract Syntax Notation One)라고 부르며 이것 역시 ITU-T 표준이다.
다시 말하면 'ASN.1'은 데이터를 구조화하고 인코딩하는 문법이다. X.509 인증서에 정의된 각 필드를 구체적으로 어떻게 표현할지를 기술한다. 'ASN.1'은 X.509 인증서의 필드를 명확하고 일관되게 구조화하여 운영체제가 다른 시스템 간에서도 데이터 호환성을 보장한다.
4. 디지털 인증서의 파일 형태(DER, PEM) 설명
CA는 X.509 형태의 인증서를 생성 시 ASN.1 문법을 사용하여 데이터를 구조화하고 표현한다. 이후 사용자에게 전달하기 위해서 ASN.1로 작성된 데이터를 바이너리로 변환하여 인코딩한다. 이를 'DER(Distinguished Encoding Rules)' 형식이라고 한다. DER 형식은 기계가 처리하기 좋은 방식으로 압축된 형태의 인증서이다.
이후 필요에 따라 DER 형식을 Base64 인코딩하여 'PEM(Private Enhanced Mail) 형식'으로 변환할 수도 있다. PEM 형식의 인증서는 다음과 같이 "---BEGIN CERTIFICATE---", "---END CERTIFICATE---"라는 구분자 사이에 Base64로 인코딩 된 데이터를 포함한다.
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIEUmpg6zANBgkqhkiG9w0BAQsFADBvMQswCQYDVQQGEwJV
aWtpMQswCQYDVQQLEwJBQzEZMBcGA1UEAxMQd2lraS5leGFtcGxlLmNvbTAeFw0y
UzELMAkGA1UECBMCQ0ExDjAMBgNVBAcTBUxvcyBBbmdlbGVzMQwwCgYDVQQKEwN3
...
-----END CERTIFICATE-----
이외에도 pfx, p7b 등의 여러 가지 인증서 형태가 존재하지만 글의 길이가 길어지기에 생략한다.
5. DN
앞서 살펴보았듯이 X.509 인증서에 반드시 들어가야 할 정보가 있다. 어떤 Entity의 인증서인지에 대한 '주체(Subject)' 정보, 어떤 CA가 인증서를 발급했는지에 대한 '발급자(Issuer)' 정보가 그것이다. 이를 표현하는 방법을 DN(Distinguished Name)이라고 한다.
DN은 고유 식별자로 X.509 디렉터리 표준에 따라 특정 개체를 유일하게 구분할 수 있도록 설계되었다.
다음은 인증서 내에 기재된 DN 사용 예시이다.
// 소유자 DN 예시
CN=*.tistory.com, O=Kakao Corp, L=Jeju-si, ST=Jeju-do, C=KR
// 발급자 DN 예시
CN=Thawte TLS RSA CA G1, OU=www.digicert.com, O=DigiCert Inc, C=US
위에서 살펴본 대로 DN은 주로 CN, OU, O, C 값으로 구성되어 있다.
- CN(Common Name) : 주체의 일반적인 이름, 주체가 서버일 시에는 도메인 이름을 명시
- OU(Organization Unit Name) : 조직 내 부서
- O(Organization Name) : 조직 이름
- L(Locality Name) : 지역 및 도시
- ST(State or Province Name) : 주 혹은 도
- C(Country) : 국가 코드
이렇게 구성된 DN은 다음의 역할을 수행한다.
- DN으로 소유자와 발급자를 고유하게 식별할 수 있다.
일반적으로 하나의 CA에서 동일한 DN이 존재하지 않도록 설계해야 한다. 다음의 예시로서 고유하지 않은 DN의 위험을 표현할 수 있다.
* 같은 DN을 가진 사용자 인증서가 여러 개 존재한다면 특정 인증서를 고유하게 식별하는 것이 불가능하다.
* 같은 DN을 가진 발급자 인증서가 여러 개 존재한다면 어느 인증기관으로부터 발급받은 것인지 명확히 알 수 없고 신뢰불가하다.
* 같은 DN을 가진 SSL 인증서가 여러 개 존재한다면 서버와 클라이언트 간에 어떤 인증서를 사용할지 모호하다.
따라서, 하나의 CA에서 발급한 인증서에는 동일한 DN을 가질 수 없다. 다만 인증서 버전이 다른 경우, SAN 필드를 사용하는 다중 주체 인증서의 경우는 동일한 DN을 가지더라도 각각의 객체로 취급되며 충돌이 발생하지 않는다.
- DN으로 RootCA - SubCA - Entity의 신뢰 사슬이 완성된다.
∗ Entity 인증서 내에 자신의 발급자 DN 확인 가능 → SubCA 인증서의 주체와 일치여부 확인
만약 일치한다면, Entity와 SubCA와의 신뢰 관계 형성 확인되었다고 말할 수 있다.
∗ SubCA 인증서 내에서 자신의 발급자 DN 확인 가능 → RootCA 인증서의 주체와 일치여부 확인
만약 일치한다면, SubCA와 RootCA와의 신뢰 관계 형성 확인되었다고 말할 수 있다.
∴ 위의 관계가 명백히 확인되었다면 RootCA - SubCA - Entity의 신뢰 사슬이 완성되었다고 표현할 수 있다.
- DN은 고유하기 때문에 인증서 검증 시 활용한다.
이처럼 DN은 인증서에서 주체(Subject)와 발급자(Issuer)를 식별하는 중요한 필드로, PKI 시스템에서 신뢰를 구축하고 검증하는 과정에서 중요한 역할을 한다. CN, OU, O, C 등의 필드로 구체적인 정보를 포함하며 각 객체를 고유하게 구분한다.
6. 마무리
이번 글을 정리하면 다음과 같다.
디지털 인증서는 단순한 전자 문서가 아니다. 그것은 PKI 시스템이라는 복잡한 신뢰 구조의 정점에서 사람과 시스템, 서버와 서비스가 상호 간의 신뢰를 확인할 수 있도록 해주는 결정적인 수단이다. 현실 세계에서 신분증이 개인의 신원을 증명하듯, 디지털 세계에서는 인증서가 그러한 역할을 수행한다.
X.509는 이러한 인증서를 어떤 구조로 만들어야 하는지를 정의한 국제 표준이며, ASN.1은 그 구조를 실제로 표현하고 인코딩하기 위한 문법이다. 이를 통해 다양한 운영체제와 네트워크 환경에서도 일관된 방식으로 인증서를 해석하고 사용할 수 있다. 또한 DER, PEM 등의 파일 형식은 인증서를 저장하고 전달하기 위한 실질적 수단으로, 용도에 따라 선택적으로 사용된다.
인증서의 핵심 식별 정보인 DN은 주체와 발급자를 고유하게 식별하고, 나아가 인증서 간의 신뢰 사슬을 형성하는 데 필수적인 구성 요소이다. DN을 통해 우리는 루트 CA부터 최종 엔티티 인증서에 이르기까지, 신뢰가 어떻게 계층적으로 전파되는지를 명확히 이해할 수 있다.
디지털 세계에서의 신뢰는 우연히 만들어지지 않는다. 그 기반에는 정교하게 설계된 PKI 시스템과 이를 통해 구현된 디지털 인증서가 자리하고 있다.
'보안 > 인증서' 카테고리의 다른 글
인증 경로와 인증서 체인 이해하기 : 구성, 동작 원리, HTTPS 적용 사례 (0) | 2025.03.04 |
---|---|
X.509 인증서의 확장 필드 정리 : Key Usage, SAN부터 AIA까지 (0) | 2025.02.17 |
X.509 인증서의 기본 필드 정리 : 버전, 일련번호, 유효기간까지 (0) | 2025.02.17 |
X.509 인증서 구조 정리 : TBSCertificate, SignatureAlgorithm, SignatureValue에 대한 이해 (0) | 2025.01.26 |
인증서와 ASN.1의 이해 - TLV 구조와 실제 변환 예시까지 (0) | 2025.01.21 |