PKI/X509 Profile

[X.509] μΈμ¦μ„œ κΈ°λ³Έ μ œν•œ(Basic Constraints)에 λŒ€ν•΄μ„œ

JayKimπŸ™‚ 2023. 7. 6. 16:30

X.509 μ—μ„œ CA μΈμ¦μ„œμ˜ ν•„μˆ˜ 값인 Basic Constraints 에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž.
보톡 ν•œκΈ€λ‘œλŠ” κΈ°λ³Έ μ œν•œ 이라고 ν‘œν˜„ν•œλ‹€.

μ•„λž˜ 그림을 보면 X.509 CA μΈμ¦μ„œμ—μ„œ basicConstrains 값이 쑴재 ν•œλ‹€.

CA μΈμ¦μ„œ 예제

CA( RootCA 포함) μΈμ¦μ„œμ—μ„œλŠ” ν•„μˆ˜λ‘œ 이 값이 μ‘΄μž¬ν•œλ‹€.
ν•œλ§ˆλ””λ‘œ CA μΈμ¦μ„œλ₯Ό λ§Œλ“€λ €λ©΄ 이 ν™•μž₯ ν•„λ“œκ°€ ν•„μˆ˜ 값이닀.

Basic Constrains ASN.1 μ •μ˜

id-ce-basicConstraints OBJECT IDENTIFIER ::=  { id-ce 19 }

BasicConstraints ::= SEQUENCE {
        cA                      BOOLEAN DEFAULT FALSE,
        pathLenConstraint       INTEGER (0..MAX) OPTIONAL }

μœ„ ASN.1 μ •μ˜λ₯Ό 보면 두가지 값이 쑴재 ν•œλ‹€.

  • cA : 이 뢀뢄이 cA μΈμ¦μ„œ 유무λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

기본적으둜 CA μΈμ¦μ„œ 이면 TRUE 둜 μ„€μ • λ˜μ–΄μ•Ό ν•˜λ©° 값이 μ—†μœΌλ©΄ End Entity μΈμ¦μ„œλ‘œ 보면 λœλ‹€.

  • pathLenConstraint : 이 값은 CA μΈμ¦μ„œκ°€ λ°œκΈ‰ κ°€λŠ₯ν•œ SubCA 의 Depth 둜 보면 λœλ‹€.

λ§Œμ•½ pathLenConstraints 값이 0 이면 SubCA μΈμ¦μ„œλ₯Ό λ°œκΈ‰ ν•  수 μ—†κ³ 
End Entity μΈμ¦μ„œλ§Œ λ°œν–‰ ν•  μˆ˜μžˆλ‹€.
값이 1 인 κ²½μš°λŠ” SubCA의 1단계 κΉŒμ§€ λ°œκΈ‰μ΄ κ°€λŠ₯ν•˜λ‹€.
End-Entity κ²½μš°λŠ” pathLenConstraints 값을 μ‚¬μš© ν•΄μ„œλŠ” μ•ˆλœλ‹€.
λ§Œμ•½ 예제 그림처럼 None κ²½μš°λŠ” νŠΉλ³„νžˆ μ œν•œ 없이 SubCA의 단계λ₯Ό λ‘˜ 수 μžˆλ‹€λŠ” μ˜λ―Έμ΄λ‹€.

이 BasicConstrains μ˜μ—­μ€ X.509 μΈμ¦μ„œ ν”„λ‘œν”„μΌμ˜ ν™•μž₯ μ˜μ—­μΈλ°
CA μΈμ¦μ„œ 경우 critical 둜 섀정이 λœλ‹€.

일반 End-Entity μΈμ¦μ„œ 경우( ex SSL μ„œλ²„ μΈμ¦μ„œ ) 이 값은 μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ λ˜μ–΄μ„œ 이 ν•„λ“œκ°€ μ—†λ‹€.

마무리

X.509 μΈμ¦μ„œλŠ” 크게 μš©λ„λ‘œ 보면 CA μΈμ¦μ„œμ™€ End Entity μΈμ¦μ„œλ‘œ λ‚˜λˆŒ 수 μžˆλŠ”λ°
μ΄κ²ƒμ˜ ꡬ별 값이 BasicConstrains μ„€μ • κ°’μœΌλ‘œ 보면 λœλ‹€.