RFC 準拠

Certificate Authority Service は、ZLint ツールを使用して、X.509 証明書が RFC 5280 ルールに従って有効であることを確認します。ただし、CA Service は RFC 5280 のすべての要件を適用しているわけではありません。CA Service を使用して作成された CA が、準拠していない証明書を発行する可能性があります。

CA Service は、次の RFC 5280 要件を適用します。

RFC 5280 セクション Lint 句
4.1.1.2 Certificate の signatureAlgorithm には、シーケンス tbsCertificate の signature フィールドと同じアルゴリズム識別子を含める必要があります(セクション 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 の場合にのみ、Extensions フィールドが表示される必要があります
4.2 証明書に特定の拡張機能のインスタンスを複数含めることはできません。
4.2 CA がサブジェクト フィールドに空のシーケンスを含む証明書を発行する場合、CA はサブジェクト代替名拡張をサポートする必要があります。
4.2.1.1 証明書パスの作成を容易にするため、準拠 CA によって生成されたすべての証明書に、authorityKeyIdentifier 拡張機能の keyIdentifier フィールドを含める必要があります。
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 ビットがアサートされている場合、基本制約拡張機能(セクション 4.2.1.9)の cA ビットもアサートする必要があります。
4.2.1.3 証明書に keyUsage 拡張機能が含まれている場合、少なくとも 1 つのビットを 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 subject フィールドに空のシーケンスが含まれている場合、発行 CA は、critical としてマークされた subjectAltName 拡張を含める必要があります。
4.2.1.6 subjectAltName 拡張情報にインターネット メールアドレスが含まれている場合、そのアドレスは rfc822Name に格納する必要があります。
4.2.1.6 IP バージョン 4 の場合、[RFC 791] で指定されているように、オクテット文字列には 4 つのオクテットを含める必要があります。IP バージョン 6 の場合、[RFC 2460] で指定されているように、オクテット文字列には 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 拡張機能が存在する場合、シーケンスには少なくとも 1 つのエントリが含まれている必要があります。
4.2.1.6 準拠 CA は、空の GeneralName フィールドを含む subjectAltNames を含む証明書を発行してはなりません。
4.2.1.7 発行元の代替名は、4.2.1.6 に従ってエンコードする必要があります。
4.2.1.8 サブジェクト ディレクトリ属性: 準拠 CA は、この拡張機能を非クリティカルとしてマークする必要があります。
4.2.1.9 指定する場合、pathLenConstraint フィールドは 0 以上の値にする必要があります。
4.2.1.9 準拠 CA は、証明書のデジタル署名の検証に使用される公開鍵を含むすべての CA 証明書にこの拡張機能を含める必要があります。また、そのような証明書で拡張機能を重要としてマークする必要があります。
4.2.1.9 CA は、cA ブール値がアサートされ、鍵の使用拡張機能が keyCertSign ビットをアサートしない限り、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] を表すために、RFC 4632(CIDR)のスタイルでエンコードされた 8 つのオクテットを含める必要があります。IPv6 アドレスの場合、iPAddress フィールドには、同様にエンコードされた 32 オクテットを含める必要があります。
4.2.1.11 ポリシーの制約が空のシーケンスである証明書を発行してはなりません。つまり、inhibitPolicyMapping フィールドまたは requireExplicitPolicy フィールドのいずれかが必要です。
4.2.1.11 ポリシーの制約: 準拠 CA は、この拡張機能を「必須」としてマークする必要があります。
4.2.1.13 DistributionPoint は reasons フィールドのみで構成することはできません。distributionPoint または cRLIssuer のいずれかが必要です。
4.2.1.14 準拠 CA は、この Inhibit anyPolicy 拡張機能を重大としてマークする必要があります。
4.2.1.15 最新の 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 エンコードを使用する場合は、すべての文字列を Unicode 正規化形式 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 準拠 CA は、anyExtendedKeyUsage KeyPurposeId が存在する場合、この拡張機能をクリティカルとしてマークしないでください。
4.2.1.13 CRL 配布ポイント拡張機能は重要でないものでなければなりません
4.2.1.13 DistributionPointName が存在する場合は、少なくとも 1 つの LDAP または HTTP URI を含める必要があります。
4.2.1.13 準拠 CA は、nameRelativeToCRLIssuer を使用して配布ポイント名を指定しないでください。
4.2.2.1 id-ad-caIssuers accessMethod を使用する場合は、少なくとも 1 つのインスタンスで、HTTP [RFC 2616] または LDAP [RFC 4516] URI である accessLocation を指定する必要があります。
7.2 現在の構造で国際化ドメイン名に対応するには、準拠する実装で、dNSName フィールドに格納する前に、国際化ドメイン名を RFC 3490 のセクション 4 で指定されている ASCII 対応エンコード(ACE)形式に変換する必要があります。