PKI/X509 Profile

X.509 ์ธ์ฆ์„œ ํ”„๋กœํŒŒ์ผ

JayKim๐Ÿ™‚ 2022. 11. 21. 17:12

X509 ์ธ์ฆ์„œ ๊ตฌ์กฐ

X509 ์ธ์ฆ์„œ ํ”„๋กœํŒŒ์ผ

Authority Key Identifier
๋ฐœ๊ธ‰์ž๊ฐ€ ๋ณต์ˆ˜์˜ ์ „์ž์„œ๋ช…ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋•Œ, ๊ณต๊ฐœํ‚ค๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ 
ํ‚ค์‹๋ณ„์ž(์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐœ๊ธ‰์ž ๊ณต๊ฐœํ‚ค ํ•ด์‰ฌ๊ฐ’), ๋ฐœ๊ธ‰์ž๋ช…, ๋ฐœ๊ธ‰์ž ์ธ์ฆ์„œ ์ผ๋ จ๋ฒˆํ˜ธ๋กœ ๊ตฌ์„ฑ

Subject Key Identifier
ํŠน์ • ๊ณต๊ฐœํ‚ค๋ฅผ ํฌํ•จํ•˜๋Š” ์ธ์ฆ์„œ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ 
CA ์ธ์ฆ์„œ์ธ ๊ฒฝ์šฐ, ํ•ด๋‹น ์†Œ์œ ์ž์— ์˜ํ•ด ๋ฐœ๊ธ‰๋˜๋Š” ์ธ์ฆ์„œ์˜ AKI ํ™•์žฅํ•„๋“œ์˜ ํ‚ค์‹๋ณ„์ž๊ฐ’๊ณผ ๋™์ผ
ํ‚ค์‹๋ณ„์ž(์ผ๋ฐ˜์ ์œผ๋กœ ์†Œ์œ ์ž ๊ณต๊ฐœํ‚ค ํ•ด์‰ฌ๊ฐ’)๋กœ ๊ตฌ์„ฑ

Key Usage
์ธ์ฆ์„œ์™€ ์—ฐ๊ด€๋œ ๊ณต๊ฐœํ‚ค์Œ์˜ ์‚ฌ์šฉ๋ชฉ์ ์„ ์ •์˜ํ•จ
์ผ๋ฐ˜์ ์œผ๋กœ ๊ณต๊ฐœํ‚ค์Œ์˜ ์‚ฌ์šฉ ์šฉ๋„๋ฅผ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ 
์ „์ž์„œ๋ช…, ๋ถ€์ธ๋ด‰์‡„, ํ‚ค์ „์†ก, ๋ฐ์ดํ„ฐ์•”ํ˜ธํ™”, ํ‚ค๊ณต์œ , ์ธ์ฆ์„œ์„œ๋ช…, CRL์„œ๋ช…, ํ‚ค๊ณต์œ ์‹œ ์•”ํ˜ธํ™” ์ˆ˜ํ–‰, ํ‚ค๊ณต์œ ์‹œ ๋ณตํ˜ธํ™” ์ˆ˜ํ–‰ ์šฉ๋„

Extended Key Usage
์ธ์ฆ์„œ์™€ ์—ฐ๊ด€๋œ ๊ณต๊ฐœํ‚ค์Œ์˜ ์ถ”๊ฐ€์ ์ธ ์‚ฌ์šฉ๋ชฉ์ ์„ ์ •์˜ํ•จ
keyUsage์˜ ํ™•์žฅ๊ฐœ๋…
์„œ๋ฒ„์ธ์ฆ, ํด๋ผ์ด์–ธํŠธ์ธ์ฆ (SSL ์ธ์ฆ์„œ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ), ์ฝ”๋“œ์‚ฌ์ธ, ์ด๋ฉ”์ผ๋ณด์•ˆ, ํƒ€์ž„์Šคํƒฌํ”„, OCSP ์„œ๋ช…, ๊ธฐํƒ€ ์ •์˜๋œ ์šฉ๋„

Private Key Usage Period
์ „์ž์„œ๋ช…์ƒ์„ฑํ‚ค์˜ ์œ ํšจ๊ธฐ๊ฐ„์ด ์ธ์ฆ์„œ์— ํฌํ•จ๋œ ์ „์ž์„œ๋ช…๊ฒ€์ฆํ‚ค์˜ ์œ ํšจ๊ธฐ๊ฐ„๊ณผ ๋‹ค๋ฅธ ๊ฒฝ์šฐ ์ด๋ฅผ ํ‘œ์‹œํ•จ
์ผ๋ฐ˜์ ์œผ๋กœ ์ „์ž์„œ๋ช…์ƒ์„ฑํ‚ค์˜ ์œ ํšจ๊ธฐ๊ฐ„์ด ์ „์ž์„œ๋ช…๊ฒ€์ฆํ‚ค์˜ ์œ ํšจ๊ธฐ๊ฐ„๋ณด๋‹ค ์งง์Œ

Certificate Policies
์ตœ์ข…๊ฐ€์ž…์ž์ธ์ฆ์„œ: ํ•ด๋‹น ์ธ์ฆ์„œ์˜ ์‚ฌ์šฉ๋ชฉ์ ๊ณผ ๋ฐœํ–‰์ •์ฑ…
CA์ธ์ฆ์„œ: ์ž์‹ ์„ ํฌํ•จํ•˜๋Š” ์ธ์ฆ๊ฒฝ๋กœ ์ •์ฑ…์ง‘ํ•ฉ์˜ ์ œํ•œ
์ธ์ฆ๊ฒฝ๋กœ ๊ฒ€์ฆ์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ๋กœ ํ™œ์šฉ

Policy Mappings
์Œ์„ ์ด๋ฃจ๋Š” ๋‘ ์ธ์ฆ์„œ ์ •์ฑ…์ด ์„œ๋กœ ๋™๋“ฑํ•จ์„ ๋‚˜ํƒ€๋ƒ„
์ธ์ฆ์„œ๋น„์Šค ์˜์—ญ๊ฐ„์˜ ์ƒํ˜ธ ์ธ์ฆ์‹œ ์ƒ๋Œ€๋ฐฉ ์ธ์ฆ์„œ๋น„์Šค ์˜์—ญ์˜ ์ธ์ฆ์„œ ์ •์ฑ…์„ ๋ฐ›์•„๋“ค์ด๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋จ
CA์ธ์ฆ์„œ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ตญ๋‚ด ๊ธฐ์ˆ ๊ทœ๊ฒฉ์—์„œ๋Š” ์ตœ์ƒ์œ„์ธ์ฆ๊ธฐ๊ด€์ธ์ฆ์„œ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

CRL Distribution Points
์ธ์ฆ์„œ์˜ ์ƒํƒœ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์ธ์ฆ์„œ ํšจ๋ ฅ์ •์ง€ ๋ฐ ํ์ง€๋ชฉ๋ก์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์— ์ด๋ฅผ ํš๋“ํ•  ์ˆ˜ ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์„œ๋ฒ„์˜ ์œ„์น˜ ์ •๋ณด๋ฅผ ํ‘œ์‹œ

Authority Information Access
์ธ์ฆ์„œ์˜ ๋ฐœ๊ธ‰์ž์— ํ•ด๋‹นํ•˜๋Š” CA์˜ ์ •๋ณด๋ฅผ ํš๋“ํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•จ
OCSP ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ๊ฒฝ๋กœ

Subject Alternative Name
์ธ์ฆ์„œ ์†Œ์œ ์ž์˜ ์ถ”๊ฐ€์ ์ธ ๋ช…์นญ ํ‘œ๊ธฐ
์‹๋ณ„๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•œ ๋ณธ์ธํ™•์ธ ๊ธฐ์ˆ ๊ทœ๊ฒฉ์— ์˜ํ•ด ์ธ์ฆ์„œ ์†Œ์œ ์ž์˜ ์‹ค๋ช…๊ณผ ๋ณธ์ธํ™•์ธ ์ •๋ณด๊ฐ€ ๋ณธ ํ•„๋“œ์— ํฌํ•จ๋จ

Issuer Alternative Name
CA์ธ์ฆ์„œ์˜ ์ถ”๊ฐ€์ ์ธ ๋ช…์นญ ํ‘œ๊ธฐ

Basic Constraint
CA์ธ์ฆ์„œ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ  CA ์ธ์ฆ์„œ ์ธ ๊ฒฝ์šฐ ์ธ์ฆ๊ฒฝ๋กœ์˜ ๊ธธ์ด๋ฅผ ์ œํ•œํ•จ

Policy Constraint
์ธ์ฆ์„œ์ •์ฑ… ๊ฒ€์‚ฌ ์š”๊ตฌ ๋ฐ ์ธ์ฆ์„œ์ •์ฑ… ๋งคํ•‘์— ๋Œ€ํ•œ ๊ธˆ์ง€ ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด

Name Constraint
์†Œ์œ ์ž๋ช… ๋ฐ ์†Œ์œ ์ž ๋Œ€์ฒด ๋ช…์นญ ํ™•์žฅํ•„๋“œ์— ์‚ฌ์šฉ๋˜๋Š” ๋ช…์นญ์˜ ๋ฒ”์œ„ ์ œํ•œ

X.509 ์ธ์ฆ์„œ ASN.1 Syntax

*RFC 3280 ๋ฌธ์„œ๋‚ด์—์„œ ์ธ์ฆ์„œ ASN.1 ์˜ ์ฃผ์š” ๋ถ€๋ถ„
RFC 3280 ์—์„œ X.509 Certificate ASN.1 Syntax ์˜ ์ผ๋ถ€๋ถ„์ด๋‹ค.

Certificate  ::=  SEQUENCE  {
     tbsCertificate       TBSCertificate,
     signatureAlgorithm   AlgorithmIdentifier,
     signature            BIT STRING  }

TBSCertificate  ::=  SEQUENCE  {
     version         [0]  Version DEFAULT v1,
     serialNumber         CertificateSerialNumber,
     signature            AlgorithmIdentifier,
     issuer               Name,
     validity             Validity,
     subject              Name,
     subjectPublicKeyInfo SubjectPublicKeyInfo,
     issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
                          -- If present, version MUST be v2 or v3
     subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
                          -- If present, version MUST be v2 or v3
     extensions      [3]  Extensions OPTIONAL
                          -- If present, version MUST be v3 --  }

Version  ::=  INTEGER  {  v1(0), v2(1), v3(2)  }

CertificateSerialNumber  ::=  INTEGER

Validity ::= SEQUENCE {
     notBefore      Time,
     notAfter       Time  }

Time ::= CHOICE {
     utcTime        UTCTime,
     generalTime    GeneralizedTime }

UniqueIdentifier  ::=  BIT STRING




Housley, et. al.            Standards Track                    [Page 97]

RFC 3280        Internet X.509 Public Key Infrastructure      April 2002


SubjectPublicKeyInfo  ::=  SEQUENCE  {
     algorithm            AlgorithmIdentifier,
     subjectPublicKey     BIT STRING  }

Extensions  ::=  SEQUENCE SIZE (1..MAX) OF Extension

Extension  ::=  SEQUENCE  {
     extnID      OBJECT IDENTIFIER,
     critical    BOOLEAN DEFAULT FALSE,
     extnValue   OCTET STRING  }

* ์ธ์ฆ์„œ BER ์ธ์ฝ”๋”ฉ ์˜ˆ์ œ ๊ฐ’ ๋ณด๊ธฐ

๋ฐ˜์‘ํ˜•