PKI/X509 Profile

[X509] λͺ…μΉ­ μ œν•œ ( Name Constraints ) μ΄λž€?

JayKimπŸ™‚ 2023. 9. 13. 09:23

λͺ…μΉ­ μ œν•œ ( Name Constraints ) ν™•μž₯ ν•„λ“œλŠ” μ†Œμœ μž λ˜λŠ” μ†Œμœ μžμ˜ λŒ€μ²΄ λͺ…μΉ­ ν™•μž₯ ν•„λ“œμ—μ„œ μ‚¬μš© λ˜λŠ” λͺ…칭에 λŒ€ν•΄ μ œν•œ ν•˜κΈ° μœ„ν•΄ μ‚¬μš© λ˜λŠ” ν™•μž₯ ν•„λ“œμ΄λ‹€.
이 ν•„λ“œλŠ” CA μΈμ¦μ„œμ—μ„œλ§Œ μ‚¬μš©λ˜λŠ” ν•„λ“œμ΄λ‹€
λ§Œμ•½ μΈμ¦μ„œμ—μ„œ ν•΄λ‹Ή νƒ€μž…μ˜ 이름이 μ—†λ‹€λ©΄ κ·Έ μΈμ¦μ„œλŠ” ν—ˆμš©λ˜λŠ” 것이닀.

μ œν•œμ€ ν—ˆμš©λ˜λŠ” ν•˜μœ„ 이름( permittedSubtrees)κ³Ό μ œν•œ λ˜λŠ” ν•˜μœ„ 이름( excludedSubtrees )의 두가지 이닀.
그리고 excludedSubtrees 에 λ§žλŠ” 값이 쑴재 ν•œλ‹€λ©΄ permittedSubtrees 의 값에 상관 없이 유효 ν•˜μ§€ μ•Šκ²Œ λœλ‹€.

x400Address, ediPartName λ˜λŠ” registeredID ν˜•μ‹μ—λŠ” 적용 λ˜μ§€ μ•ŠλŠ”λ‹€.
이 λͺ…μΉ­ μ œν•œμ„ μ‚¬μš©ν•˜λŠ” CAλŠ” 이름 μ œν•œμ„ 빈 μ‹œν€€μŠ€λ‘œ λ°œν–‰ ν•΄μ„œλŠ” μ•ˆλœλ‹€.
즉 permittedSubtrees λ₯Ό μ‚¬μš©ν•˜λ˜κ°€ ExcludedSubtress κ°’ 쀑 ν•˜λ‚˜λ₯Ό 지정 ν•΄μ•Ό ν•œλ‹€.

λͺ…μΉ­ μ œν•œ ASN.1

      id-ce-nameConstraints OBJECT IDENTIFIER ::=  { id-ce 30 }

      NameConstraints ::= SEQUENCE {
           permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
           excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }

      GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
      GeneralSubtree ::= SEQUENCE {
           base                    GeneralName,
           minimum         [0]     BaseDistance DEFAULT 0,
           maximum         [1]     BaseDistance OPTIONAL }

      BaseDistance ::= INTEGER (0..MAX)

λͺ…μΉ­ μ œν•œ νŠΉμ„±

이 ν™•μž₯ ν•„λ“œλŠ” μ…€ν”„ μ„œλͺ… μΈμ¦μ„œμ—λŠ” 적용 λ˜μ§€ μ•ŠλŠ”λ‹€.
μ΄ν”„λ‘œν•„μ—μ„œ μ΅œμ†Œ 및 μ΅œλŒ€ ν•„λ“œλŠ” 이름 ν˜•μ‹κ³Ό ν•¨κ»˜ μ‚¬μš© λ˜μ§€ μ•ŠμœΌλ―€λ‘œ μ΅œμ†Œκ°’μ€ 0이어 ν•˜κ³  μ΅œλŒ€κ°’μ€ μ—†μ–΄μ•Ό ν•œλ‹€.

  • URI 경우
    μ œμ•½μ‘°κ±΄μ€ 호슀트 뢀뢄에 적용 되며 μ •κ·œν™”λœ 도메인 이름이 지정 λ˜μ–΄μ•Ό ν•œλ‹€.
    μ œμ•½ 쑰건이 λ§ˆμΉ¨ν‘œλ‘œ λΆ€ν„° μ‹œμž‘μ„ ν•˜λ©΄ ν•˜λ‚˜ μ΄μƒμ˜ 라벨둜 ν™•μž₯ λœλ‹€.
    즉 μ œμ•½ 쑰건이 ".example.com" 일 경우 "host.example.com" κ³Ό "my.host.example.com" 을 만쑱 ν•˜μ§€λ§Œ
    "example.com"은 만쑱 ν•˜μ§€ μ•ŠλŠ”λ‹€.
    참고둜 호슀트 이름이 IP μ£Όμ†Œλ‘œ 지정 되면 κ±°λΆ€ λœλ‹€.
  • 인터넷 메일 μ£Όμ†Œ
    νŠΉμ • μ‚¬μ„œν•¨μ„ ν‘œμ‹œ ν•˜λ €λ©΄ μ œμ•½ 쑰건의 값은 전체 메일 μ£Όμ†Œλ₯Ό μ„œμ•Ό ν•œλ‹€.
    예λ₯Ό λ“€μ–΄ "root@example.com" 은 root 의 메일 함λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.
    "example.com"의 ν‘œμ‹œλŠ” "example.com" 이 호슀트인 μ–΄λ–€ 메일 μ£Όμ†Œλ„ ν•΄λ‹Ή λœλ‹€.
  • DNS name
    DNS 이름이 "host.example.com" 으둜 ν‘œν˜„ 인 경우 μ™Όμͺ½ 라벨 값이 μΆ”κ°€λŠ” μ–΄λ–€ κ²½μš°λ„ ν•΄λ‹Ή λœλ‹€. 즉 "www.host.example.com" 은 만쑱 ν•˜μ§€λ§Œ "host1.example.com" 은 만쑱 ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • directoryName
    이 μ œν•œμ€ subject ν•„λ“œμ™€ subjectAltName ν™•μž₯에 적용 λ˜μ–΄ 진닀.
    이 ν•„λ“œλ₯Ό μ μš©ν• λ•Œ DN 의 속성을 비ꡐ ν•΄μ•Ό ν•œλ‹€ 예λ₯Ό λ“€λ©΄ "CN=Hello" 같은 ν˜•μ‹μ΄λ‹€.

마무리

이 λͺ…μΉ­ μ œν•œμ€ μ£Όμ²΄μžμ™€ 주체자의 λŒ€μ²΄ 이름을 μ œν•œν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€.
μ‹€μ œλ‘œ λͺ…μΉ­ μ œν•œμ„ μ‚¬μš©ν•˜λŠ” μΈμ¦μ„œλ₯Ό 아직은 본적이 μ—†λ‹€. λ¬Όλ‘  CertMan 을 톡해 이 ν•„λ“œλ₯Ό 적용 ν•΄ λ³Ό μˆ˜λŠ” μžˆμ§€λ§Œ..
아직 이 ν•„λ“œλ„ μš©λ„μ˜ 이해가 더 ν•„μš”ν•˜λ‹€.
그리고 minmum κ³Ό maximum의 μš©λ„κ°€ 아직 잘 λͺ¨λ₯΄κ² λ‹€.