참고한 것들
Basic Constraints
- 간단하다.
- 이 인증서가 (1) CA 인지, (2) 만일 CA 라면, 자식 Intermediate certificate 를 몇개나 만들 수 있는지 명시하는 부분이다.
- (1) 항목은
cA
필드를 이용해 명시하고, - (2) 항목은
pathLenConstraint
필드를 이용해 명시한다.
- (1) 항목은
- RFC5280 에는 이 항목을 다음과 같은 구조체로 정의한다:
BasicConstraints ::= SEQUENCE {
cA BOOLEAN DEFAULT FALSE,
pathLenConstraint INTEGER (0..MAX) OPTIONAL
}
항목들
cA
- 별로 어려울 건 없다; 이 인증서가 CA 인지를 나타내는 boolean 값이다.
cA:TRUE
라면, 이 인증서는 CA 인증서로 사용할 수 있는거고cA:FALSE
라면 그 반대겠지
- 만일 이 값이 설정돼있지 않거나
cA:FALSE
라면, keyCertSign 또한 설정되면 안되고, 공개키가 인증서 서명을 검증하는데 사용되어서도 안된다고 한다.
pathLenConstraint
- 이건 이 인증서가 생성할 수 있는 자식 CA (Intermediate certificate) 가 몇개인지를 제한하는 값이다.
- 제한 의 말뜻처럼, 이 값을 명시하지 않으면 무한대의 자식 CA 를 생성할 수 있다
- 다만, 여기에는 인증서 체인의 마지막 non-CA 인증서 (End-entity certificate) 은 포함되지 않는다.
- 즉,
pathLenConstraint
값이0
이라면, 이 인증서를 이용해 자식 인증서를 생성할 때 CA 는 생성하지 못하지만 CA 가 아닌 인증서는 생성할 수 있다는 소리이다. - 주의할 점은 (비록 흔하진 않지만) 마지막 인증서가 CA 일 경우에는 포함이 된다는 것이다.
- 즉,
- 이 값이 효력이 있기 위해서는 cA 가
TRUE
여야 하고 keyCertSign 또한 설정되어 있어야 한다.