Skip to content

Commit db8ac38

Browse files
committed
Bring profiles into the modern day
Overhaul Section 7.1 Profiles, with two goals in mind: - Removing deprecated pieces of our profiles, such as OCSP and the `Internet Security Research Group` Organization Name. - Giving them the same format as the profiles in Section 7.1 of the Baseline Requirements. Fixes #188 Fixes #304
1 parent eee4c2d commit db8ac38

File tree

1 file changed

+109
-48
lines changed

1 file changed

+109
-48
lines changed

CP-CPS.md

Lines changed: 109 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -988,54 +988,115 @@ See [Section 5.5.5](#555-requirements-for-time-stamping-of-records).
988988

989989
## 7.1 Certificate profile
990990

991-
All fields are as specified in RFC 5280 and the Baseline Requirements, including fields and extensions not specifically mentioned.
992-
993-
### Root CA Certificate
994-
995-
| Field or extension | Value |
996-
| ------------------------------ | ------------------------------------------------------------------------|
997-
| Serial Number | Unique, with 64 bits of output from a CSPRNG |
998-
| Issuer Distinguished Name | C=US, O=Internet Security Research Group or O=ISRG, and a meaningful CN |
999-
| Subject Distinguished Name | Same as Issuer DN |
1000-
| Validity Period | Up to 25 years |
1001-
| Basic Constraints | cA=True, pathLength constraint absent (critical) |
1002-
| Subject Public Key | See Sections 6.1.5, 6.1.6, and 7.1.3.1 |
1003-
| Key Usage | keyCertSign, cRLSign (critical) |
1004-
1005-
### Subordinate CA Certificate
1006-
1007-
| Field or extension | Value |
1008-
| ------------------------------ | ----------------------------------------------------------------------------- |
1009-
| Serial Number | Unique, with 64 bits of output from a CSPRNG |
1010-
| Issuer Distinguished Name | Derived from Issuer certificate |
1011-
| Subject Distinguished Name | C=US, O=Let's Encrypt, and a meaningful CN |
1012-
| Validity Period | Up to 8 years |
1013-
| Basic Constraints | cA=True, pathLength constraint 0 (critical) |
1014-
| Key Usage | keyCertSign, cRLSign, digitalSignature (critical) |
1015-
| Extended Key Usage | TLS Server Authentication and optionally TLS Client Authentication |
1016-
| Certificate Policies | CAB Forum Domain Validated (2.23.140.1.2.1) |
1017-
| Authority Information Access | Contains CA Issuers URL and optionally an OCSP URL; URLs vary based on Issuer |
1018-
| Subject Public Key | See Sections 6.1.5, 6.1.6, and 7.1.3.1 |
1019-
| CRL Distribution Points | Contains a CRL URL; URL varies based on Issuer |
1020-
1021-
### DV-SSL Subscriber Certificate
1022-
1023-
| Field or extension | Value |
1024-
| --------------------------------- | --------------------------------------------------------------------------------- |
1025-
| Serial Number | Unique, with 64 bits of output from a CSPRNG |
1026-
| Issuer Distinguished Name | Derived from Issuer certificate |
1027-
| Subject Distinguished Name | CN=none, or one of the values from the Subject Alternative Name extension |
1028-
| Validity Period | Up to 100 days |
1029-
| Basic Constraints | cA=False (critical) |
1030-
| Key Usage | digitalSignature, and optionally keyEncipherment (critical) |
1031-
| Extended Key Usage | TLS Server Authentication and optionally TLS Client Authentication |
1032-
| Certificate Policies | CAB Forum Domain Validated (2.23.140.1.2.1) |
1033-
| Authority Information Access | Contains CA Issuers URL and optionally an OCSP URL; URLs vary based on Issuer |
1034-
| Subject Public Key | See Sections 6.1.5, 6.1.6, and 7.1.3.1 |
1035-
| Subject Alternative Name | A sequence of 1 to 100 dNSNames or ipAddresses (critical if no CN) |
1036-
| Precertificate poison | Per RFC 6962 (precertificates only, critical) |
1037-
| Signed Certificate Timestamp List | Per RFC 6962 (final certificates only) |
1038-
| CRL Distribution Point | If present, contains a URI to the CRL shard whose scope includes this certificate |
991+
All certificates issued by ISRG are issued in accordance with exactly one of the following profiles.
992+
993+
### Root CA Certificate Profile
994+
995+
| **Field** | **Description** |
996+
| ---- | ------ |
997+
| `tbsCertificate` | |
998+
|     `version` | See Section 7.1.1 |
999+
|     `serialNumber` | Approximately 128 bits, including at least 64 bits of output from a CSPRNG |
1000+
|     `signature` | See Section 7.1.3.2 |
1001+
|     `issuer` | C=US, O=ISRG, and a meaningful CN |
1002+
|     `validity` | At most 9132 days |
1003+
|     `subject` | Byte-for-byte identical to the `issuer` field |
1004+
|     `subjectPublicKeyInfo` | See Sections 6.1.5, 6.1.6, and 7.1.3.1 |
1005+
|     `issuerUniqueID` | Not present |
1006+
|     `subjectUniqueID` | Not present |
1007+
|     `extensions` | |
1008+
|         `basicConstraints` | Critical, with `cA` set to true |
1009+
|         `keyUsage` | Critical, with the `keyCertSign` (5) and `cRLSign` (6) bits set |
1010+
|         `subjectKeyIdentifier` | Contains a truncated hash of the `subjectPublicKey`, per RFC 7093, Section 2(2) |
1011+
|         Any other extension | Not present |
1012+
| `signatureAlgorithm` | Byte-for-byte identical to the `tbsCertificate.signature` |
1013+
| `signatureValue` | A signature appropriate to the `signatureAlgorithm` field |
1014+
1015+
### Cross-Certified Subordinate CA Certificate Profile
1016+
1017+
| **Field** | **Description** |
1018+
| ---- | ------ |
1019+
| `tbsCertificate` | |
1020+
|     `version` | See Section 7.1.1 |
1021+
|     `serialNumber` | Approximately 128 bits, including at least 64 bits of output from a CSPRNG |
1022+
|     `signature` | See Section 7.1.3.2 |
1023+
|     `issuer` | Byte-for-byte identical to the `subject` field of the Issuing CA |
1024+
|     `validity` | At most 8 years |
1025+
|     `subject` | Byte-for-byte identical to the `subject` field of the existing CA Certificate |
1026+
|     `subjectPublicKeyInfo` | See Sections 6.1.5, 6.1.6, and 7.1.3.1 |
1027+
|     `issuerUniqueID` | Not present |
1028+
|     `subjectUniqueID` | Not present |
1029+
|     `extensions` | |
1030+
|         `authorityInformationAccess` | Contains the HTTP URI of the Issuing CA's Certificate |
1031+
|         `authorityKeyIdentifier` | Byte-for-byte identical to the `subjectKeyIdentifier` of the Issuing CA |
1032+
|         `basicConstraints` | Critical, with `cA` set to true |
1033+
|         `certificatePolicies` | Contains the Baseline Requirements Domain Validated Reserved Policy Identifier (OID 2.23.140.1.2.1) |
1034+
|         `crlDistributionPoints` | Contains the HTTP URI of a CRL issued by the Issuing CA |
1035+
|         `keyUsage` | Critical, with the `keyCertSign` (5) and `cRLSign` (6) bits set |
1036+
|         `subjectKeyIdentifier` | Byte-for-byte identical to the `subjectKeyIdentifier` of the existing CA Certificate |
1037+
|         Any other extension | Not present |
1038+
| `signatureAlgorithm` | Byte-for-byte identical to the `tbsCertificate.signature` |
1039+
| `signatureValue` | A signature appropriate to the `signatureAlgorithm` field |
1040+
1041+
### TLS Subordinate CA Certificate Profile
1042+
1043+
| **Field** | **Description** |
1044+
| ---- | ------ |
1045+
| `tbsCertificate` | |
1046+
|     `version` | See Section 7.1.1 |
1047+
|     `serialNumber` | Approximately 128 bits, including at least 64 bits of output from a CSPRNG |
1048+
|     `signature` | See Section 7.1.3.2 |
1049+
|     `issuer` | Byte-for-byte identical to the `subject` field of the Issuing CA |
1050+
|     `validity` | At most 8 years |
1051+
|     `subject` | C=US, O=Let's Encrypt, and a meaningful CN |
1052+
|     `subjectPublicKeyInfo` | See Sections 6.1.5, 6.1.6, and 7.1.3.1 |
1053+
|     `issuerUniqueID` | Not present |
1054+
|     `subjectUniqueID` | Not present |
1055+
|     `extensions` | |
1056+
|         `authorityInformationAccess` | Contains the HTTP URI of the Issuing CA's Certificate |
1057+
|         `authorityKeyIdentifier` | Byte-for-byte identical to the `subjectKeyIdentifier` of the Issuing CA |
1058+
|         `basicConstraints` | Critical, with `cA` set to true and `pathLenConstraint` set to 0 |
1059+
|         `certificatePolicies` | Contains the Baseline Requirements Domain Validated Reserved Policy Identifier (OID 2.23.140.1.2.1) |
1060+
|         `crlDistributionPoints` | Contains the HTTP URI of a CRL issued by the Issuing CA |
1061+
|         `extKeyUsage` | Contains `id-kp-serverAuth` (OID 1.3.6.1.5.5.7.3.1) |
1062+
|         `keyUsage` | Critical, with the `digitalSignature` (0), `keyCertSign` (5), and `cRLSign` (6) bits set |
1063+
|         `subjectKeyIdentifier` | Contains a truncated hash of the `subjectPublicKey`, per RFC 7093, Section 2(2) |
1064+
|         Any other extension | Not present |
1065+
| `signatureAlgorithm` | Byte-for-byte identical to the `tbsCertificate.signature` |
1066+
| `signatureValue` | A signature appropriate to the `signatureAlgorithm` field |
1067+
1068+
### Subscriber (Server) Certificate Profile
1069+
1070+
| **Field** | **Description** |
1071+
| ---- | ------ |
1072+
| `tbsCertificate` | |
1073+
|     `version` | See Section 7.1.1 |
1074+
|     `serialNumber` | Approximately 144 bits, including at least 64 bits of output from a CSPRNG |
1075+
|     `signature` | See Section 7.1.3.2 |
1076+
|     `issuer` | Byte-for-byte identical to the `subject` field of the Issuing CA |
1077+
|     `validity` | At most 100 days |
1078+
|     `subject` | CN omitted, or optionally contains one of the values from the Subject Alternative Name extension |
1079+
|     `subjectPublicKeyInfo` | See Sections 6.1.5, 6.1.6, and 7.1.3.1 |
1080+
|     `issuerUniqueID` | Not present |
1081+
|     `subjectUniqueID` | Not present |
1082+
|     `extensions` | |
1083+
|         `authorityInformationAccess` | Contains the HTTP URI of the Issuing CA's Certificate |
1084+
|         `authorityKeyIdentifier` | Byte-for-byte identical to the `subjectKeyIdentifier` of the Issuing CA |
1085+
|         `basicConstraints` | Critical, with `cA` set to false |
1086+
|         `certificatePolicies` | Contains the Baseline Requirements Domain Validated Reserved Policy Identifier (OID 2.23.140.1.2.1) |
1087+
|         `crlDistributionPoints` | Contains the HTTP URI of a CRL issued by the Issuing CA |
1088+
|         `extKeyUsage` | Contains `id-kp-serverAuth` (OID 1.3.6.1.5.5.7.3.1), and optionally `id-kp-clientAuth` (OID 1.3.6.1.5.5.7.3.2) |
1089+
|         `keyUsage` | Critical, with the `digitalSignature` (0) bit set, and optionally the `keyEnciperment` (2) bit set |
1090+
|         `SignedCertificateTimestampList` | Contains at least two SCTs from logs run by different operators |
1091+
|         `subjectAltName` | A sequence of 1 to 100 names of type `dNSName` or `ipAddress` (critical if CN omitted) |
1092+
|         `subjectKeyIdentifier` | Optionally contains a truncated hash of the `subjectPublicKey`, per RFC 7093, Section 2(2) |
1093+
|         Any other extension | Not present |
1094+
| `signatureAlgorithm` | Byte-for-byte identical to the `tbsCertificate.signature` |
1095+
| `signatureValue` | A signature appropriate to the `signatureAlgorithm` field |
1096+
1097+
### Precertificate Profile
1098+
1099+
Identical to the Subscriber (Server) Certificate Profile, except that the `SignedCertificateTimestampList` extension is omitted, and a critical "CT poison" extension (OID 1.3.6.1.4.1.11129.2.4.3) is included. ISRG Precertificates are issued directly by the Issuing CA, not by a delegated Precertificate Signing CA.
10391100

10401101
### 7.1.1 Version number(s)
10411102

0 commit comments

Comments
 (0)