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 欄位中。