rfc-3280

Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile

R. Housley, W. Polk, W. Ford, D. Solo
date2002-05 streamIETF areasec wgpkix statusPROPOSED STANDARD pages129 canonicalhttps://www.rfc-editor.org/rfc/rfc3280 doi10.17487/RFC3280 errataview
This memo profiles the X.509 v3 certificate and X.509 v2 Certificate Revocation List (CRL) for use in the Internet. [STANDARDS-TRACK]

obsoleted by

obsoletes

updated by

Extracted elements (28)

design-rationale §3.3

CRL-based revocation has an inherent time-granularity limitation equal to the CRL issuance period (minutes to a week), because a revocation is not reliably communicated until the next CRL is issued and distributed. This limitation motivated support for online revocation protocols (defined in companion PKIX specifications), which can reduce the latency to near-zero once a CA accepts a revocation report.

pkix, security

design-rationale §3.2

RFC 3280 replaces the rigid RFC 1422 PEM hierarchy (all paths from IPRA, name subordination rule, PCA concept hard-coded into verifiers) with a flexible architecture using X.509 v3 extensions. Policy extensions replace PCAs and name constraint extensions replace the subordination rule, enabling automation and allowing certification paths to start from any locally trusted CA rather than a single global root.

pkix, security

interoperability-note §4.1.2.4

Legacy implementations often encode ISO 8859-1 (Latin1String) character data but tag it as TeletexString. Since TeletexString encodes some characters differently from ISO 8859-1, implementations SHOULD be prepared to handle both encodings under a TeletexString tag.

pkix

interoperability-note §4.1.2.4

Name comparison for path validation requires PrintableString attribute values to be compared case-insensitively with leading/trailing whitespace removed and internal whitespace sequences collapsed to a single space. Attribute values encoded in different ASN.1 types (e.g., PrintableString vs BMPString) MAY be treated as different strings, which is a deliberate relaxation from X.500 rules.

pkix, ldap

normative-requirement §4.2 MUST

A certificate MUST NOT include more than one instance of a particular extension. A certificate-using system MUST reject the certificate if it encounters a critical extension it does not recognize; a non-critical unrecognized extension MAY be ignored.

pkix, security

normative-requirement §3.3 MUST NOT

A CRL entry MUST NOT be removed from the CRL until it appears on one regularly scheduled CRL issued beyond the revoked certificate's validity period. This prevents relying parties from missing a revocation by using a cached CRL that predates the entry's removal.

pkix, security

normative-requirement §4.1.2.4 MUST

All certificates issued after December 31, 2003 MUST use the UTF8String encoding of DirectoryString in distinguished names. Prior to that date, conforming CAs MUST choose PrintableString, then BMPString, then UTF8String in preference order; TeletexString and UniversalString SHOULD NOT be used for new subjects.

pkix

normative-requirement §4.2 MUST

Applications conforming to this profile MUST recognize the following extensions: key usage, certificate policies, subject alternative name, basic constraints, name constraints, policy constraints, extended key usage, and inhibit any-policy. Applications SHOULD additionally recognize authority key identifier, subject key identifier, and policy mappings.

pkix

normative-requirement §4.1.2.5 MUST

CAs conforming to this profile MUST always encode certificate validity dates through the year 2049 as UTCTime; validity dates in 2050 or later MUST be encoded as GeneralizedTime. This rule avoids the Y2K-style two-digit year ambiguity of UTCTime for dates near or after 2050.

pkix

normative-requirement §4.2.1.4 MUST NOT

CAs conforming to this profile MUST NOT generate certificates that include a critical private key usage period extension. This extension SHOULD NOT be used within the Internet PKI at all.

pkix

normative-requirement §4.2.1.1 MUST

Conforming CAs MUST support key identifiers (sections 4.2.1.1 and 4.2.1.2), basic constraints, key usage, and certificate policies extensions. The keyIdentifier field of the authorityKeyIdentifier extension MUST be included in all certificates generated by conforming CAs to facilitate certification path construction.

pkix

normative-requirement §4.1.2.6 MUST

Conforming implementations generating new certificates with electronic mail addresses MUST use rfc822Name in the subjectAltName extension. Simultaneous inclusion of an EmailAddress attribute in the subject DN for legacy compatibility is deprecated but permitted.

pkix, email

normative-requirement §4.1.2.5.2 MUST NOT

GeneralizedTime values MUST be expressed in Greenwich Mean Time (Zulu) in the format YYYYMMDDHHMMSSZ, MUST include seconds even when zero, and MUST NOT include fractional seconds.

pkix

normative-requirement §4.1.2.6 MUST

If the subject is a CA (cA TRUE in basicConstraints), the subject field MUST be populated with a non-empty DN matching the issuer field in all certificates issued by that CA. If subject naming is only in subjectAltName, the subject field MUST be an empty sequence and the subjectAltName extension MUST be marked critical.

pkix

normative-requirement §4.1.2.4 MUST

The issuer field MUST contain a non-empty distinguished name. Conforming implementations MUST be prepared to receive issuer and subject names containing country, organization, organizational-unit, DN qualifier, state or province name, common name, serial number, and domainComponent attribute types.

pkix, ldap

normative-requirement §4.2.1.3 MUST

The Key Usage extension MUST appear in certificates containing public keys used to validate digital signatures on other public key certificates or CRLs. When present, it SHOULD be marked critical. If the keyCertSign bit is asserted, the cA bit in basicConstraints MUST also be asserted.

pkix, security

normative-requirement §4.1.2.2 MUST

The serial number MUST be a positive integer unique for each certificate issued by a given CA. Certificate users MUST be able to handle serialNumber values up to 20 octets; conformant CAs MUST NOT use serialNumber values longer than 20 octets.

pkix

normative-requirement §4.1.1.2 MUST

The signatureAlgorithm field in the outer Certificate SEQUENCE MUST contain the same algorithm identifier as the signature field inside TBSCertificate (section 4.1.2.3). This redundancy is required so verifiers need not parse the full TBSCertificate to identify the algorithm.

pkix, crypto

normative-requirement §4.2.1.2 MUST

The subject key identifier extension MUST appear in all conforming CA certificates (where cA is TRUE in basicConstraints). Both the authority key identifier and subject key identifier extensions MUST NOT be marked critical.

pkix

normative-requirement §4.1.2.5.1 MUST

UTCTime values MUST be expressed in Greenwich Mean Time (Zulu) and MUST include seconds (format YYMMDDHHMMSSZ). The year field SHALL be interpreted as 19YY when YY >= 50, and as 20YY when YY < 50.

pkix

normative-requirement §4.1.2.1 MUST

When extensions are used, as expected in this profile, the certificate version MUST be 3 (encoded value 2). Conforming implementations MUST recognize version 3 certificates at minimum; implementations SHOULD be prepared to accept any version certificate.

pkix

normative-requirement §4.2.1.7 MUST

When subjectAltName contains an rfc822Name, the address MUST use addr-spec format (RFC 822). When it contains an iPAddress, it MUST be stored in network byte order as exactly 4 octets for IPv4 or exactly 16 octets for IPv6. A dNSName of ' ' (space) MUST NOT be used.

pkix, ip, dns, email

protocol-element §4.2.1.7

The GeneralName CHOICE structure supports nine name forms used in subjectAltName, issuerAltName, and name constraints: otherName, rfc822Name (IA5String), dNSName (IA5String), x400Address (ORAddress), directoryName (Name), ediPartyName (EDIPartyName), uniformResourceIdentifier (IA5String), iPAddress (OCTET STRING), and registeredID (OID).

pkix

protocol-element §4.2.1.3

The Key Usage extension is a BIT STRING with nine named bits: digitalSignature(0), nonRepudiation(1), keyEncipherment(2), dataEncipherment(3), keyAgreement(4), keyCertSign(5), cRLSign(6), encipherOnly(7), decipherOnly(8). The encipherOnly and decipherOnly bits have undefined meaning in the absence of the keyAgreement bit.

pkix, crypto

security-consideration §9

The security of the Internet PKI depends on protecting CA private signing keys; compromise enables fraudulent certificate issuance. Implementations MUST reject certificates with unrecognized critical extensions to prevent security policy bypass. Relying parties SHOULD obtain the most recently issued CRL and verify certificate status before relying on any certificate.

pkix, security, crypto

state-machine §6.1

The basic certification path validation algorithm (Section 6.1) processes an ordered sequence of n certificates. For each certificate i (1 to n), it verifies signature, validity period, revocation status, and enforces name and policy constraints using state variables including valid_policy_tree, working_public_key, working_issuer_name, and path length counters. The wrap-up procedure at n produces final policy set and public key outputs.

pkix, security

wire-format §4.1.2

TBSCertificate is a SEQUENCE containing version, serialNumber (INTEGER), signature (AlgorithmIdentifier), issuer (Name), validity (notBefore/notAfter), subject (Name), subjectPublicKeyInfo, optional issuerUniqueID and subjectUniqueID (v2/v3 only), and optional extensions (v3 only). The Extensions field is itself a SEQUENCE of Extension values, each being extnID (OID), critical (BOOLEAN DEFAULT FALSE), and extnValue (OCTET STRING).

pkix, crypto

wire-format §4.1

The X.509 v3 certificate is a SEQUENCE of three fields: tbsCertificate (TBSCertificate), signatureAlgorithm (AlgorithmIdentifier), and signatureValue (BIT STRING). All data to be signed MUST be encoded using ASN.1 Distinguished Encoding Rules (DER).

pkix, crypto, security