RFC 法規遵循
憑證授權單位服務會使用 ZLint 工具,確保 X.509 憑證符合 RFC 5280 規則。不過,CA 服務不會強制執行所有 RFC 5280 規定,因此使用 CA 服務建立的 CA 可能會核發不符規定的憑證。
CA 服務會強制執行下列 RFC 5280 規定。
RFC 5280 節 | Lint 子句 |
---|---|
4.1.1.2 | 憑證中的 signatureAlgorithm 必須包含與 tbsCertificate 序列 (第 4.1.2.3 節) 中簽章欄位相同的演算法 ID。 |
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 時,才必須顯示專屬 ID 欄位 |
4.1.2.8 | 符合這個設定檔的 CA 不得產生含有專屬 ID 的憑證。 |
4.1.2.9 | 只有在版本為 3 時,才必須顯示擴充功能欄位 |
4.2 | 憑證不得包含特定擴充功能的兩個以上執行個體。 |
4.2 | 如果 CA 核發的憑證主體欄位為空序列,CA 必須支援主體別名擴充功能 |
4.2.1.1 | 為利於建構認證路徑,符合規範的 CA 產生的所有憑證都必須包含 authorityKeyIdentifier 擴充功能的 keyIdentifier 欄位。 |
4.2.1.1 | 符合規範的 CA 必須將 authorityKeyIdentifier 擴充功能標示為非重要。 |
4.2.1.2 | 為方便建構認證路徑,所有符合規定的 CA 憑證都必須包含 authorityKeyIdentifier,也就是所有包含基本限制擴充功能 (第 4.2.1.9 節) 的憑證,其中 cA 的值為 TRUE。 |
4.2.1.2 | 符合規定的 CA 必須將主體金鑰 ID 擴充功能標示為非重要。 |
4.2.1.3 | 如果斷言 keyCertSign 位元,則基本限制附加資訊 (第 4.2.1.9 節) 中的 cA 位元也必須斷言。 |
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 | 如要將這類身分識別 (SAN 中的任何內容) 繫結至憑證,就必須使用主體別名 (或簽發者別名) 擴充功能; |
4.2.1.6 | 如果主體欄位包含空白序列,核發 CA 必須加入標示為重要的 subjectAltName 擴充功能。 |
4.2.1.6 | 如果 subjectAltName 擴充功能包含網際網路郵件地址,該地址「必須」儲存在 rfc822Name 中。 |
4.2.1.6 | 如 [RFC 791] 所述,對於 IP 版本 4,八位元組字串必須包含四個八位元組。如 [RFC 2460] 所述,如果是 IP 版本 6,八位元字串必須剛好包含十六個八位元。 |
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 不得核發含有空白 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 不得核發憑證。也就是說,必須提供 permittedSubtrees 欄位或 excludedSubtrees 欄位。 |
4.2.1.10 | 在這個設定檔中,任何名稱表單都不會使用最小值和最大值欄位,因此最小值必須為零,且不得有最大值。 |
4.2.1.10 | iPAddress 的語法必須如第 4.2.1.6 節所述,並特別針對名稱限制新增下列項目:如果是 IPv4 位址,GeneralName 的 iPAddress 欄位必須包含八 (8) 個八位元,並以 RFC 4632 (CIDR) 的樣式編碼,代表位址範圍 [RFC 4632]。如果是 IPv6 位址,iPAddress 欄位必須包含以類似方式編碼的 32 個八位元。 |
4.2.1.11 | 如果政策限制為空序列,符合規範的 CA 不得核發憑證。也就是說,您必須提供 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 | 符合規定的 CA 必須將 Freshest CRL 擴充功能標示為非重要。 |
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「應」使用 UTF8String 編碼做為 explicitText,但「可」使用 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 | 如果存在 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 | 為配合目前結構中的國際化網域名稱,相容的實作項目「必須」先將國際化網域名稱轉換為 RFC 3490 第 4 節中指定的 ASCII 相容編碼 (ACE) 格式,再儲存在 dNSName 欄位中。 |