RFC 準拠

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

CA Service では、次の RFC 5280 要件が適用されます。

RFC 5280 セクション Lint 句
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 オクテットを超えるシリアル番号番号を使用しないでください。
4.1.2.4 issuer フィールドには、空でない識別名(DN)を含める必要があります。
4.1.2.5 このプロファイルに準拠する CA は、常に 2049 年までの証明書の有効期間を UTCTime としてエンコードする必要があります。
4.1.2.5.1 UTCTime 値は、グリニッジ標準時(Zulu)で表現する必要があります。
4.1.2.5.1 UTCTime 値には秒を含める必要があります
4.1.2.5.2 GeneralizedTime 値はグリニッジ標準時(Zulu)で表現する必要があります
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 は、一意の ID を持つ証明書を生成することはできません。
4.1.2.9 拡張機能フィールドは、バージョンが 3 の場合にのみ表示されます。
4.2 1 つの証明書に複数の拡張機能のインスタンスを含めることはできません。
4.2 CA がサブジェクト フィールドの空のシーケンスで証明書を発行する場合、CA はサブジェクト代替名拡張をサポートしている必要があります。
4.2.1.1 authorityKeyIdentifier 拡張機能の keyIdentifier フィールドは、認定パスの作成を容易にするため、標準準拠の CA によって生成されるすべての証明書に含める必要があります。
4.2.1.1 遵守する CA は、authorityKeyIdentifier 拡張機能を重要でないとしてマークする必要があります。
4.2.1.2 認証パスの作成を容易にするために、authorityIdentifier は、cA の値が TRUE の場合に、遵守するすべての CA 証明書、つまり基本的な制約拡張(セクション 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 サブジェクト フィールドに空のシーケンスが含まれている場合、発行 CA は重大としてマークされた 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 SANs: 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 認証局(RFC 3986、セクション 3.2)を含む SAN URI には、完全修飾ドメイン名または 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 フィールドはゼロ以上である必要があります。
4.2.1.9 標準準拠の CA は、証明書のデジタル署名の検証に使用される公開鍵を含むすべての CA 証明書に、この拡張機能を含める必要があります。この証明書は、証明書の重要度に応じてマークする必要があります。
4.2.1.9 cA ブール値がアサートされ、鍵使用拡張機能が keyCertSign ビットを表明しない限り、CA に pathLenConstraint フィールドを含めないでください。
4.2.1.10 名前制約(CA 証明書でのみ使用)は、認証パスの後続の証明書のすべてのサブジェクト名を配置する名前空間を示します。
4.2.1.10 名前の制約: 条件を満たす CA が、この拡張機能を重要としてマークする必要があります
4.2.1.10 遵守する CA は、名前の制約が空のシーケンスの証明書を発行してはなりません。つまり、allowedSubtrees フィールドか excludeSubtrees が存在する必要があります。
4.2.1.10 このプロファイルでは、最小フィールドと最大フィールドはどの名前フォームにも使用されないため、最小値はゼロで、最大値は存在しない必要があります。
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 適合する CA は、ポリシーの制約が空のシーケンスの証明書を発行してはなりません。つまり、inhibitPolicyMapping フィールドまたは require 明示的な Policy フィールドが存在する必要があります。
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 に 99991231235959Z の GeneralizedTime 値を割り当てる必要があります。
4.2.1.2 適切なエンドユーザー証明書を識別できるようアプリケーションをサポートするには、この拡張機能をすべてのエンドユーザー証明書に含める必要があります。
4.2.1.3 存在する場合、遵守する CA は、この鍵の使用拡張機能を重要としてマークする必要があります。
4.2.1.4 適合 CA は notificationRef オプションを使用すべきではありません。
4.2.1.4 遵守する CA は、明示的なテキストに UTF8String エンコードを使用するべきですが、IA5String を使用することもできます。
4.2.1.4 明示的なテキスト文字列には、制御文字を含めないでください(例: 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 に準拠する CA は、subjectAltName 拡張子を重要でないとしてマークする必要があります。
4.2.1.7 存在する場合、遵守する CA は、この発行者の代替名の拡張機能を重要でないとしてマークする必要があります。
4.2.1.10 x400Address、ediPartyName、registerID 名の形式に名前の制約を適用すべきではありません。
4.2.1.12 任意の CA に準拠する 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] の accessLocation を指定する必要があります。
7.2 現在の構造で国際化ドメイン名に対応するには、国際化ドメイン名を、dNSName フィールドに格納する前に、RFC 3490 のセクション 4 で指定されている ASCII 互換エンコード(ACE)形式に変換する必要があります。