RFC 규정 준수

Certificate Authority Service는 ZLint 도구를 사용해서 X.509 인증서가 RFC 5280 규칙에 맞게 유효한지 확인합니다. 하지만 CA 서비스가 모든 RFC 5280 요구사항을 적용하지는 않으며 CA 서비스를 사용하여 생성된 CA가 호환되지 않는 인증서를 발급할 수도 있습니다.

CA 서비스는 다음과 같은 RFC 5280 요구사항을 적용합니다.

RFC 5280 섹션 린트 절
4.1.1.2 인증서의 signatureAlgorithm은 tbsCertificate 시퀀스(섹션 4.1.2.3)의 서명 필드와 동일한 알고리즘 식별자를 포함해야 합니다.
4.1.2.1 확장이 사용된 경우 이 프로필의 요구사항에 따라 버전이 3이어야 합니다(값은 2).
4.1.2.2 일련번호는 각 인증서에 CA가 할당한 양의 정수여야 합니다.
4.1.2.2 규정을 준수하는 CA는 20 옥텟보다 긴 serialNumber 값을 사용하지 않아야 합니다.
4.1.2.4 발급기관 필드는 비어 있지 않은 고유 이름(DN)을 포함해야 합니다.
4.1.2.5 이 프로필을 준수하는 CA는 항상 인증서 유효 날짜를 2049년까지(UTCTime 기준)로 인코딩해야 합니다.
4.1.2.5.1 UTCTime 값은 그리니치 표준시(줄루)로 표시해야 합니다.
4.1.2.5.1 UTCTime 값은 초를 포함해야 합니다.
4.1.2.5.2 GeneralizedTime 값은 그리니치 표준시(줄루)로 표시해야 합니다.
4.1.2.5.2 GeneralizedTime은 초를 포함해야 합니다.
4.1.2.5.2 GeneralizedTime 값은 소수점 이하 초를 포함하지 않아야 합니다.
4.1.2.6 주체가 CA인 경우(즉, 섹션 4.2.1.9에 설명된 대로 기본 제약조건 확장이 있고 cA 값이 TRUE인 경우) 주체 CA에서 발급된 모든 인증서의 발급기관 필드 콘텐츠(섹션 4.1.2.4)와 일치하는 비어 있지 않은 고유 이름을 주체 필드에 채워야 합니다.
4.1.2.8 고유 식별자 필드는 버전이 2 또는 3인 경우에만 표시되어야 합니다.
4.1.2.8 이 프로필을 준수하는 CA는 고유 식별자를 갖는 인증서를 생성하지 않아야 합니다.
4.1.2.9 확장 필드는 버전이 3인 경우에만 표시되어야 합니다.
4.2 인증서는 특정 확장 인스턴스를 둘 이상 포함하지 않아야 합니다.
4.2 CA가 주체 필드에 빈 시퀀스를 사용해서 인증서를 발급할 때 CA는 주체 대체 이름 확장을 지원해야 합니다.
4.2.1.1 authorityKeyIdentifier 확장의 keyIdentifier 필드는 인증 경로 구성을 돕기 위해 규정 준수 CA에서 생성된 모든 인증서에 포함되어야 합니다.
4.2.1.1 규정 준수 CA는 authorityKeyIdentifier 확장을 중요하지 않음으로 표시해야 합니다.
4.2.1.2 인증 경로 구성을 돕기 위해서는 authorityKeyIdentifier가 모든 규정 준수 CA 인증서 즉, cA 값이 TRUE인 기본 제약조건 확장(섹션 4.2.1.9)을 포함하는 모든 인증서에 표시되어야 합니다.
4.2.1.2 규정 준수 CA는 주체 키 식별자 확장을 중요하지 않음으로 표시해야 합니다.
4.2.1.3 keyCertSign 비트가 어설션되었으면 기본 제약조건 확장의 cA 비트(섹션 4.2.1.9)도 어설션해야 합니다.
4.2.1.3 인증서에 keyUsage 확장이 표시된 경우 비트 중 하나 이상을 1로 설정해야 합니다.
4.2.1.4 인증서 정책 OID는 인증서 정책 확장에 두 번 이상 표시되지 않아야 합니다.
4.2.1.4 특수 정책 anyPolicy에 한정자가 사용된 경우 이 섹션에서 식별된 한정자로 제한되어야 합니다.
4.2.1.5 정책은 특수 값 anyPolicy에 대해 매핑되지 않아야 합니다.
4.2.1.6 이러한 ID(SAN의 모든 항목)가 인증서에 바인딩될 때마다 주체 대체 이름(또는 발급기관 대체 이름) 확장을 사용해야 합니다.
4.2.1.6 주체 필드에 빈 시퀀스가 포함된 경우 발급 CA는 중요로 표시된 subjectAltName 확장을 포함해야 합니다.
4.2.1.6 subjectAltName 확장에 인터넷 메일 주소가 포함된 경우 주소를 rfc822Name에 저장해야 합니다.
4.2.1.6 [RFC 791]에 지정된 대로 IP 버전 4의 경우 옥텟 문자열이 정확히 4개 옥텟을 포함해야 합니다. [RFC 2460]에 지정된 대로 IP 버전 6의 경우 옥텟 문자열이 정확히 16개 옥텟을 포함해야 합니다.
4.2.1.6 subjectAltName 확장에 도메인 이름 시스템 라벨이 포함된 경우 도메인 이름을 dNSName(IA5String)에 저장해야 합니다.
4.2.1.6 SAN: dNSName은 "선호 이름 구문"으로 표시해야 합니다.
4.2.1.6 dNSName이 " "인 subjectAltName 확장은 사용하지 않아야 합니다.
4.2.1.6 인터넷 메일 주소에 대한 DNS 표현(subscriber@example.com 대신 subscriber.example.com)을 사용하지 않아야 합니다.
4.2.1.6 subjectAltName 확장에 URI가 포함된 경우 이름을 uniformResourceIdentifier(IA5String)에 저장해야 합니다.
4.2.1.6 SAN URI: 이름은 상대적 URI가 아니어야 하고 [RFC 3986]에 지정된 URI 구문 및 인코딩 규칙을 따라야 합니다.
4.2.1.6 SAN URI: 이름은 스킴(예: "http" 또는 "ftp") 및 스킴 관련 부분을 포함해야 합니다.
4.2.1.6 기관을 포함하는 SAN URI([RFC 3986], 섹션 3.2)는 호스트로 정규화된 도메인 이름 또는 IP 주소를 포함해야 합니다.
4.2.1.6 subjectAltName 확장이 제공된 경우 시퀀스에 항목이 하나 이상 포함되어야 합니다.
4.2.1.6 규정 준수 CA는 subjectAltNames에 빈 GeneralName 필드가 포함된 인증서를 발급하지 않아야 합니다.
4.2.1.7 발급기관 대체 이름은 4.2.1.6에 따라 인코딩되어야 합니다.
4.2.1.8 주체 디렉터리 속성: 규정 준수 CA는 이 확장을 중요하지 않음으로 표시해야 합니다.
4.2.1.9 pathLenConstraint 필드가 표시된 경우에는 0보다 크거나 같아야 합니다.
4.2.1.9 규정 준수 CA는 인증서의 디지털 서명을 검증하는 데 사용되는 공개 키를 포함하는 모든 인증서에 이 확장을 포함하고 이러한 인증서에서 확장을 중요로 표시해야 합니다.
4.2.1.9 cA 불리언이 어설션되고 키 사용 확장으로 keyCertSign 비트가 어설션되지 않은 한 CA가 pathLenConstraint 필드를 포함하지 않아야 합니다.
4.2.1.10 CA 인증서에서만 사용해야 하는 이름 제약조건 확장은 인증 경로에서 후속 인증서의 모든 주체 이름의 위치를 찾아야 하는 네임스페이스를 나타냅니다.
4.2.1.10 이름 제약조건: 규정 준수 CA는 이 확장을 중요로 표시해야 합니다.
4.2.1.10 규정 준수 CA는 이름 제약조건이 빈 시퀀스에 해당하는 인증서를 발급하지 않아야 합니다. 즉, permittedSubtrees 필드 또는 excludedSubtrees를 반드시 제공해야 합니다.
4.2.1.10 이 프로필 내에서 최소 및 최대 필드는 어떠한 이름 양식에도 사용되지 않으므로 최솟값이 0이고 최댓값은 없어야 합니다.
4.2.1.10 iPAddress 구문은 섹션 4.2.1.6에 설명된 대로여야 하고 특히 이름 제약조건에 대해 다음 항목을 추가해야 합니다. IPv4 주소의 경우 GeneralName의 iPAddress 필드는 RFC 4632(CIDR) 스타일로 인코딩된 8개 옥텟을 포함하여 주소 범위 [RFC 4632]를 표시해야 합니다. IPv6 주소의 경우 iPAddress 필드는 비슷하게 인코딩된 32개 옥텟을 포함해야 합니다.
4.2.1.11 규정 준수 CA는 정책 제약조건이 빈 시퀀스에 해당하는 인증서를 발급하지 않아야 합니다. 즉, inhibitPolicyMapping 필드 또는 requireExplicitPolicy 필드를 제공해야 합니다.
4.2.1.11 정책 제약조건: 규정 준수 CA는 이 확장을 중요로 표시해야 합니다.
4.2.1.13 DistributionPoint는 이유 필드만으로 구성되지 않아야 합니다. distributionPoint 또는 cRLIssuer를 제공해야 합니다.
4.2.1.14 규정 준수 CA는 이러한 Inhibit anyPolicy 확장을 중요로 표시해야 합니다.
4.2.1.15 Freshest CRL 확장은 규정 준수 CA에서 중요하지 않음으로 표시되어야 합니다.
4.2.2.1 규정 준수 CA는 이 기관 정보 액세스 확장을 중요하지 않음으로 표시해야 합니다.
4.2.2.2 규정 준수 CA는 이 주체 정보 액세스 확장을 중요하지 않음으로 표시해야 합니다.
4.1.2.5 인증서에 잘 정의된 만료 날짜가 없음을 표시하려면 notAfter에 GeneralizedTime 값 99991231235959Z를 할당해야 합니다.
4.2.1.2 애플리케이션이 적합한 종단 개체 인증서를 식별하도록 돕기 위해서는 이 확장을 모든 종단 개체 인증서에 포함해야 합니다.
4.2.1.3 이 키 사용 확장이 제공된 경우에는 규정 준수 CA가 이를 중요로 표시해야 합니다.
4.2.1.4 규정 준수 CA는 noticeRef 옵션을 사용하지 않아야 합니다.
4.2.1.4 규정 준수 CA는 explicitText에 대해 UTF8String 인코딩을 사용해야 하지만 IA5String을 사용할 수 있습니다.
4.2.1.4 explicitText 문자열은 제어 문자(예: U+0000~U+001F 및 U+007F~U+009F)를 포함하지 않아야 합니다.
4.2.1.4 UTF8String 인코딩이 사용된 경우 유니코드 정규화 양식 C(NFC)에 따라 모든 문자 시퀀스를 정규화해야 합니다.
4.2.1.5 정책 매핑 확장에 이름 지정된 각 issuerDomainPolicy는 동일한 인증서에 있는 인증서 정책 확장에서 어설션되어야 합니다.
4.2.1.5 규정 준수 CA는 이 정책 매핑 확장을 중요로 표시해야 합니다.
4.2.1.6 주체 고유 이름이 비어 있지 않은 인증서에 subjectAltName 확장을 포함할 때 규정 준수 CA는 subjectAltName 확장을 중요하지 않음으로 표시해야 합니다.
4.2.1.7 이 발급기관 대체 이름 확장이 제공된 경우에는 규정 준수 CA가 이를 중요하지 않음으로 표시해야 합니다.
4.2.1.10 x400Address, ediPartyName, registeredID 이름 양식에 이름 제약조건을 적용하지 않아야 합니다.
4.2.1.12 anyExtendedKeyUsage KeyPurposeId가 제공된 경우에는 규정 준수 CA가 이 확장을 중요로 표시하지 않아야 합니다.
4.2.1.13 CRL 배포 지점 확장은 중요하지 않음이어야 합니다.
4.2.1.13 DistributionPointName이 제공된 경우 LDAP 또는 HTTP URI를 하나 이상 포함해야 합니다.
4.2.1.13 규정 준수 CA는 배포 지점 이름을 지정하기 위해 nameRelativeToCRLIssuer를 사용하지 않아야 합니다.
4.2.2.1 id-ad-caIssuers accessMethod가 사용된 경우 하나 이상의 인스턴스가 HTTP [RFC 2616] 또는 LDAP [RFC 4516] URI에 해당하는 accessLocation을 지정해야 합니다.
7.2 현재 구조에서 국제화된 도메인 이름을 지원하도록 규정을 준수하는 구현 방식에서는 dNSName 필드에 저장하기 전에 RFC 3490 섹션 4에 지정된 대로 ASCII 호환 가능한 인코딩(ACE) 형식으로 국제화된 도메인 이름을 변환해야 합니다.