Internet Draft Michael Myers
draft-ietf-pkix-ocspv2-02.txt TraceRoute Security
March, 2001 Rich Ankney
Expires in six months Certco
Carlisle Adams
Entrust
Stephen Farrell
Baltimore
Carlin Covey
Cylink
Online Certificate Status Protocol, version 2
draft-ietf-pkix-ocspv2-02.txt
Status of this memo
This document is an Internet-Draft and is in full conformance with all pro-
visions of Section 10 of RFC 2026.
Internet-Drafts are working documents of the Internet Engineering Task
Force (IETF), its areas, and its working groups. Note that other groups
may also distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months and
may be updated, replaced, or obsoleted by other documents at any time. It
is inappropriate to use Internet-Drafts as reference material or to cite
them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
1. Abstract
This document advances the specification of RFC 2560 [RFC2560] towards the
acquisition of any data relevant to determining a digital certificate's reliability; interoperability with [RFC2560] is maintained. Such data include a
certificate's revocation status, it's validation status and ancillary
information supporting these assertions. Three services are defined:
Online Revocation Status (ORS); Delegated Path Validation (DPV); and Delegated
Path Discovery (DPD). Ancillary extensions defined in [RFC2560] are also
maintained. The means by which a certificate may be identified is also
expanded.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document (in
uppercase, as shown) are to be interpreted as described in [RFC2119].
Myers, et al. [Page 1]
Internet Draft OCSPv2 March 2001
TABLE OF CONTENTS
1. Abstract 1
2. Protocol Overview 3
3. General Protocol Requirements 4
3.1 Requests 4
3.1.1 Service Identification 5
3.1.2 Certificate Identification 5
3.1.3 Signed Requests 6
3.2 Response Envelope 6
3.2.1 Definition of Basic OCSP Response 7
3.2.2 Error Responses 7
3.2.3 Signed Responses 8
3.2.4 Response Acceptance Criteria 8
3.3 Certificate Content 8
3.4 Authorized Responders 8
3.5 Use of ASN.1 Syntax 10
3.6 Application to Attribute Certificates 10
3.7 Mandatory and Optional Cryptographic Algorithms 10
4. Service Deployment Requirements 10
5. Online Revocation Status 11
5.1 Request 11
5.2 Response 11
5.2.1 Interpretation of CertStatus Field 11
5.2.2 Response Signature Production and Validation 12
5.2.3 Interpretation of Time-related Fields 12
5.2.4 Other Fields 13
5.2.5 CA Key Revocation 13
6. Delegated Path Validation 13
6.1 Request 13
6.2 Response 14
6.2.1 Interpretation of CertStatus Field 14
6.3 Processing Considerations 15
7. Delegated Path Discovery 15
7.1 Request 15
7.2 Response 16
7.3 Processing Considerations 17
8. Extensions 17
8.1 Nonce 17
8.2 CRL References 17
8.3 Acceptable Response Types 18
8.4 Archive Cutoff 18
8.5 Service Locator 18
8.6 CRL Entry Extensions 19
9. Security Considerations 19
10. Acknowledgments 19
11. References 19
12. Authors' Addresses 20
13. Appendix A. OCSP over HTTP 20
14. Appendix B. OCSP in ASN.1 21
15. Appendix C. MIME registrations 21
Myers, et al. [Page 2]
Internet Draft OCSPv2 March 2001
2. Protocol Overview
OCSP is a online request-response PKI information acquisition protocol composed
of generic envelope and a set of standardized request and response types. An
OCSP request message is composed of protocol version number, a request type
object identifier and other request data relevant to a particular request type.
Requests may be digitally signed. Responses are correspondingly structured as
an OID and associated response data. Responses may or may not be digitally
signed depending on service request type or error processing.
A request-response pair defines a service type. The Online Revocation Status
(ORS), Delegated Path Validation (DPV) and Delegated Path Discovery (DPD)
service types are of particular interest.
The ORS service enables certificate processing software to obtain timely
information regarding the revocation status of a certificate beyond that
typically available through the use of CRLs. While useful to the deployment of
this service in certain instances, CRLs are not mandatory to implement ORS.
The DPV service enables an environment to offload certificate path validation
complexity to a centralized server, thereby yielding benefits to thin clients
and enterprise security policy management. DPV provides client-side control
points whereby a client may govern essential aspects of a server's technical
behavior. These are:
a. OID-based specification of policies relevant to path validation logic;
b. specification of paths or partial paths to be respected by the server;
c. a means to specify a time context for historical references;
d. inclusion of revocation information, whether CRLs or OCSP; and
e. flags that stimulate a DPV server to return ancillary information, including:
the path used, the revocation information relied on, a timestamp on the entire
process and an OID-based identification of the policy or policies enforced in
the validation process.
DPV control points are optional elements. Minimally, the relationship between a
DPV client and a DPV server is an answer to the question "is this certificate
valid now?" The control points enable a client to dynamically tailor its
definition of "valid" in accordance with localized policies.
The DPD service enables certificate processing software to acquire the
certificate and revocation data a DPV server might otherwise use, thereby
yielding benefits in integrating a single PKI information access protocol across
a potentially diverse set of more general data retrieval mechanisms (e.g. X.500,
LDAP, HTTP, FTP, etc.) As with DPV, the DPD service specification provides for
optional client-side control points. These are:
a. an iterative mechanism that enables a client to walk through several
technically valid paths to discover an path acceptable to the client's
operational policies (should such multiple paths exist);
Myers, et al. [Page 3]
Internet Draft OCSPv2 March 2001
b. OID-based specification of policies relevant to path validation logic;
c. specification of paths or partial paths to be respected by the server;
d. a means to specify a time context for historical references; and
e. flags that stimulate a DPD server to return ancillary information, including:
a timestamp on the entire process; an OID-based identification of the policy or
policies enforced in the path construction process; and whether or not the
client prefers CRLs, OCSP responses or either (in some instances one or the
other might not be available to a DPD server).
OCSP also provides for the use of extensions that enable specialization of
service types towards unique circumstances. These extensions, originally
defined by [RFC2560] and carried forward in this document, include:
a. Nonces useful for replay detection needs;
b. CRL references, enable clients to acquire the CRLs used;
c. Archive Cutoff specification applicable to historical references;
d. CRL entry extensions for a acquisition of specific CRL content; and
e. Service Locator mechanism that enables client-driven server redirection.
3. General Protocol Requirements
Service requests and responses SHALL conform to this Section 3.0. Service
definitions MAY extend these requirements.
3.1 Requests
Requests SHALL include the following content:
OCSPRequest ::= SEQUENCE {
tbsRequest TBSRequest,
optionalSignature [0] EXPLICIT Signature OPTIONAL }
TBSRequest ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
requestorName [1] EXPLICIT GeneralName OPTIONAL,
requestList SEQUENCE OF Request,
requestExtensions [2] EXPLICIT Extensions OPTIONAL }
Version ::= INTEGER { v1(0), v2(1) }
Myers, et al. [Page 4]
Internet Draft OCSPv2 March 2001
A requestExtensions field SHALL ONLY be included if the requestExtensions field
contains one or more values, else the field SHALL be omitted from OCSPRequest.
3.1.1 Service Identification
As a general rule, service request types are identified by an OID in the
requestExtensions field of TBSRequest. An exception is made for the Online
Revocation Status (ORS) service. Other than ORS, the requests of all OCSP-based
service SHALL be an OID identifying the requested service in the
requestExtensions field of TBSRequest; he ORS service MAY be so identified. To
determine if an request is or is not a request for ORS service, servers SHALL
implement logic equivalent to the following:
a. Upon receipt of a request, examine the contents of the requestExtensions
field.
b. If the requestExtensions field is absent, the request SHALL be considered an
ORS service request.
c. If the requestExtensions field contains one or more OIDs, then if any one of
those values matches the ORS service type OID defined in this document, the
request SHALL be considered an ORS service request.
3.1.2 Certificate Identification
The ReqCert structure enables clients to identify a certificate in the means
most suitable to the technical constraints of their local environment. This
structure interoperably extends the CertID definition defined in [RFC2560]. The
following options are available:
ReqCert ::= CHOICE {
certID CertID,
issuerSerial [0] IssuerandSerialNumber,
pKCert [1] Certificate,
name [2] GeneralName,
certHash [3] OCTET STRING}
CertID ::= SEQUENCE {
hashAlgorithm AlgorithmIdentifier,
issuerNameHash OCTET STRING, -- Hash of Issuer's DN
issuerKeyHash OCTET STRING, -- Hash of Issuers public key
serialNumber CertificateSerialNumber }
As noted, [RFC2560] interoperablity can be obtained through the use of the
certID element of the ReqCert CHOICE. If certID is used in ReqCert, the value
for version in the tbsRequest field of OCSPRequest SHALL be v1. If any other
choice in ReqCert is used, the value for version SHALL be v2.
Clients claiming compliance to this specification SHALL support either
issuerSerial OR PKCert. Servers claiming compliance to this specification SHALL
be capable of responding to both. Support for other options is STRONGLY
ENCOURAGED.
Myers, et al. [Page 5]
Internet Draft OCSPv2 March 2001
The value for issuerNameHash SHALL be calculated over the DER encoding of the
issuer's name field in the certificate being checked.
The value for issuerKeyHash SHALL be calculated over the value of the BIT STRING
subjectPublicKey key field (excluding tag and length) in the issuer's
certificate.
The hash algorithm used for both these hashes, is identified in hashAlgorithm.
serialNumber is the serial number of the certificate for which status is being
requested.
3.1.3 Signed Requests
Service definitions MAY require the use of digital signatures over requests.
When required, signed request SHALL be produced as follows:
Signature ::= SEQUENCE {
signatureAlgorithm AlgorithmIdentifier,
signature BIT STRING,
certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL}
Request ::= SEQUENCE {
reqCert ReqCert,
singleRequestExtensions [0] EXPLICIT Extensions OPTIONAL }
Signed requests SHALL identify the requestor in the requestorName field of
TBSRequest (see Section 3.1). Signed requests MAY include in the certs field of
the Signature element certificates that assist the OCSP responder in verifying
the requestor's signature.
3.2 Response Envelope
Responses SHALL contain a responseStatus field. A value for the responseBytes
field SHALL be included if the value for responseStatus is "successful". A
value for the responseBytes field MAY be included for responseStatus values
other than "successful". The responseBytes field SHALL be composed of an OBJECT
IDENTIFIER identifying the response type and the bytes of the actual response
encoded as an OCTET STRING.
OCSPResponse ::= SEQUENCE {
responseStatus OCSPResponseStatus,
responseBytes [0] EXPLICIT ResponseBytes OPTIONAL }
OCSPResponseStatus ::= ENUMERATED {
successful (0),
malformedRequest (1),
internalError (2),
tryLater (3),
--(4) is not used for legacy reasons
sigRequired (5),
unauthorized (6),
noMoreData (7) }
Myers, et al. [Page 6]
Internet Draft OCSPv2 March 2001
ResponseBytes ::= SEQUENCE {
responseType OBJECT IDENTIFIER,
response OCTET STRING }
3.2.1 Definition of Basic OCSP Response
This section defines syntax useful to both the ORS and DPV services. Other
services MAY reuse this syntax as needs dictate. In cases where this syntax is
used, service definitions SHALL provide a definition for the certStatus field of
SingleResponse.
BasicOCSPResponse ::= SEQUENCE {
tbsResponseData ResponseData,
signatureAlgorithm AlgorithmIdentifier,
signature BIT STRING,
certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL }
ResponseData ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
responderID ResponderID,
producedAt GeneralizedTime,
responses SEQUENCE OF SingleResponse,
responseExtensions [1] EXPLICIT Extensions OPTIONAL }
ResponderID ::= CHOICE {
byName [1] Name,
byKey [2] KeyHash }
SingleResponse ::= SEQUENCE {
reqCert ReqCert,
certStatus CertStatus,
thisUpdate GeneralizedTime,
nextUpdate [0] EXPLICIT GeneralizedTime OPTIONAL,
singleExtensions [1] EXPLICIT Extensions OPTIONAL }
3.2.2 Error Responses
A server produces the "malformedRequest" response if the request received does
not conform to the required syntax.
The response "internalError" indicates that the server reached an inconsistent
internal state. The query should be retried, potentially with another responder.
In the event that a server is operational but unable to return a status for the
requested certificate, the "tryLater" response can be used to indicate that the
service exists, but is temporarily unable to respond.
The response "sigRequired" is returned in cases where the server requires the
client sign the request in order to construct a response.
The response "unauthorized" is returned in cases where the client is not
authorized to make this query to this server.
Myers, et al. [Page 7]
Internet Draft OCSPv2 March 2001
The response "noMoreData" is returned in cases where the server has previously
returned the last positive response to a related sequence of requests.
3.2.3 Signed Responses
Response messages containing only a value for responseStatus SHALL NOT be
digitally signed. Response signatures SHALL be computed over the DER encoding
of the tbsRequest structure.
3.2.4 Response Acceptance Criteria
Clients SHALL reject as invalid any response that does not satisfy all of the
following criteria:
a. the certificate(s) identified in a received response matches that (or those)
identified in the corresponding request;
b. the signature on the response is valid;
c. the identity of the signer matches the intended recipient of the request;
d. the signer is currently authorized to sign the response;
e. when available, the time at which the status being indicated is known to be
correct is sufficiently recent; and
f. when available, the time at or before which newer information will be
available is greater than the current time.
3.3 Certificate Content
Certificate-producing entities SHALL be capable of including the
AuthorityInfoAccess extension (defined in [RFC2459], section 4.2.2.1) in
certificates. Alternatively, the accessLocation for the OCSP provider may be
configured locally at the OCSP client.
Certificate-producing entities supporting this protocol SHALL be capable of
providing for the inclusion of a value for a uniformResourceIndicator (URI)
accessLocation and the OID value id-ad-ocsp for the accessMethod in the
AccessDescription SEQUENCE.
The value of the accessLocation field in the subject certificate defines the
transport (e.g. HTTP) used to access the OCSP responder and may contain other
transport dependent information (e.g. a URL).
3.4 Authorized Responders
The key that signs a certificate's status information need not be the same key
that signed the certificate. It is necessary however to ensure that the entity
signing this information is authorized to do so. Therefore, a certificate's
issuer SHALL either:
Myers, et al. [Page 8]
Internet Draft OCSPv2 March 2001
a. sign the OCSPresponses itself using a private key under the control of the
issuer; or
b. explicitly delegate this authority to another entity. OCSP signing
delegation SHALL be designated by the inclusion of id-kp-OCSPSigning in an
extendedKeyUsage certificate extension included in the OCSP response signer's
certificate. This certificate MUST be issued directly by the CA that issued the
certificate in question.
Explicit delegation of OCSP signing authority SHALL be indicated by inclusion of
the following value in the extendedKeyUsage extension of certificate needed to
validate an OCSP response signature produced by such an entity:
id-kp-OCSPSigning OBJECT IDENTIFIER ::= {id-kp 9}
Systems or applications that rely on OCSP responses SHALL be capable of
detecting and enforcing use of the id-ad-ocspSigning value as described above.
They MAY provide a means of locally configuring one or more OCSP signing
authorities, and specifying the set of CAs for which each signing authority is
trusted. They SHALL reject the response if the certificate required to validate
the signature on the response fails to meet at least one of the following
criteria:ee
a. Matches a local configuration of OCSP signing authority for the certificate
in question;
b. is a certificate corresponding to a private key under control of the CA that
issued the certificate in question; or
c. includes a value of id-ad-ocspSigning in an ExtendedKeyUsage extension and is
issued by the CA that issued the certificate.
Additional acceptance or rejection criteria may apply to either the response
itself or to the certificate used to validate the signature on the response.
Since an Authorized Responder provides status information for one or more CAs,
OCSP clients need to know how to check that an Authorized Responder's
certificate has not been revoked. CAs may choose to deal with this problem in
one of three ways:
- A CA may specify that an OCSP client can trust an Authorized Responder for
the lifetime of the responder's certificate. The CA does so by including
the extension id-pkix-ocsp-nocheck. This SHOULD be a non-critical
extension. The value of the extension is NULL. CAs issuing
such a certificate should realize that a compromise of the
Authorized Responder's key, is as serious as the compromise of a CA key
used to sign CRLs, at least for the validity period of this certificate.
CAs may choose to issue this type of certificate with a very short
lifetime and renew it frequently.
id-pkix-ocsp-nocheck OBJECT IDENTIFIER ::= { id-pkix-ocsp 5 }
Myers, et al. [Page 9]
Internet Draft OCSPv2 March 2001
- A CA may specify how the responder's certificate is to be checked for
revocation. This can be done using CRL Distribution Points if the
check should be done using CRLs or CRL Distribution Points, or
Authority Information Access if the check should be done in some
other way. Details for specifying either of these two mechanisms are
available in [RFC2459].
- A CA may choose not to specify any method of revocation checking
for the responder's certificate, in which case, it would be up to the
OCSP client's local security policy to decide whether that
certificate should be checked for revocation or not.
3.5 Use of ASN.1 Syntax
The ASN.1 syntax used in this document imports terms defined in [RFC2459] and
[RFC2630]. For Signature calculation, the data to be signed is encoded using the
ASN.1 distinguished encoding rules (DER) [X.690].
ASN.1 EXPLICIT tagging is used as a default unless specified otherwise.
The terms imported from elsewhere are: Extensions, CertificateSerialNumber,
SubjectPublicKeyInfo, Name, AlgorithmIdentifier, CRLReason and
IssuerAndSerialNumber.
3.6 Application to Attribute Certificates
OCSP MAY be used without modification to provide status on attribute
certificates (ACs) conforming to [ACPROF]. Note that since [ACPROF], section
4.2.3, mandates that the issuer field uses a single X.500 name to identify the
AC issuer, and also ([ACPROF], section 4.5) mandates that an AC issuer cannot
also be a PKC issuer (at least using the same name/key), there are no syntactic
changes required to support ACs. An OCSP responder that only supports PKCs will
treat a request for status on an AC in the same way as it would treat a request
for an issuer/serial combination for which it had no information. That is, a
conforming OCSP responder need not have any specific ability to handle ACs.
3.7 Mandatory and Optional Cryptographic Algorithms
Clients and servers SHALL support the RSA signature algorithm in accordance with
RFC 2437 [RFC2437] and the SHA1 hashing algorithm as defined in FIPS Pub 180-1
[SHA1]. DSA signature support MAY be provided. If provided, this algorithm SHALL
be implemented in accordance with FIPS Pub 186 [DSS].
4. Service Deployment Requirements
This document defines three standard services: Online Revocation Status (ORS),
Delegated Path Validation (DPD) and Delegated Path Discovery (DPD). Other
services MAY be defined for environments with more local needs. Environments
MAY deploy any or all of these services in any combination. That is, a server
MAY be implemented and operated to only perform the DPD service.Equivalently,
delivery of the ORS service is NOT required to deliver the DPV service. Servers
SHOULD be capable of delivering all three services.
Myers, et al. [Page 10]
Internet Draft OCSPv2 March 2001
5. Online Revocation Status
This section defines the Online Revocation Status (ORS) service. This service
enables certificate processing software to determine if a certificate is or is
not revoked. This information MAY be recorded in non-CRL formats. While useful
to the deployment of this service in certain instances, CRLs are NOT required to
implement ORS.
Responders SHALL be capable of producing responses of the id-pkix-ocsp-basic
response type. Correspondingly, OCSP clients SHALL be capable of receiving and
processing responses of the id-pkix-ocsp-basic response type.
The value for response SHALL be the DER encoding of BasicOCSPResponse.
5.1 Request
An ORS request SHALL conform to the specifications detailed in Section 3.1 of
this document. An ORS request MAY be digitally signed. Clients are STRONGLY
ENCOURAGED to include a value of id-pkix-ocsp-ors-req as a value for the
requestExtensions field. Servers claiming compliance to this OCSPv2
specification SHALL: 1) be capable of recognizing the id-pkix-ocsp-ors-req
value; and 2) be capable of identifying ORS requests according to the mechanisms
described in Section 3.1.1 of this document.
id-pkix-ocsp OBJECT IDENTIFIER ::= { id-ad-ocsp }
id-pkix-ocsp-ors-req OBJECT IDENTIFIER ::= { id-pkix-ocsp X }
5.2 Response
The responseType field of an ORS response SHALL contain a value of id-pkix-ocsp-
basic:
id-pkix-ocsp OBJECT IDENTIFIER ::= { id-ad-ocsp }
id-pkix-ocsp-basic OBJECT IDENTIFIER ::= { id-pkix-ocsp 1 }
The responseBytes field of an ORS response SHALL be composed of the
BasicOCSPResponse syntax defined in Section 3.2.1 of this document.
5.2.1 Interpretation of CertStatus Field
The CertStatus field of BasicOCSPResponse SHALL be interpreted as follows when
the value of responseType is id-pkix-ocsp-basic.
ORSCertStatus ::= CHOICE {
good [0] IMPLICIT NULL,
revoked [1] IMPLICIT RevokedInfo,
unknown [2] IMPLICIT UnknownInfo }
RevokedInfo ::= SEQUENCE {
revocationTime GeneralizedTime,
revocationReason [0] EXPLICIT CRLReason OPTIONAL }
Myers, et al. [Page 11]
Internet Draft OCSPv2 March 2001
UnknownInfo ::= NULL -- this can be replaced with an enumeration
The "good" state indicates that the certificate has not been revoked. It does
not indicate that the certificate was ever issued, is or is in its validity
interval.
The "revoked" state indicates that the certificate has been revoked (either
permanantly or temporarily (on hold)).
The "unknown" state indicates that the responder doesn't know about the
certificate being requested.
5.2.2 Response Signature Production and Validation
ORS response messages SHALL be digitally signed if and only if they contain a
value for responseBytes. ORS signature calculation and production SHALL conform
to Section 3.2 of this document. The key used to sign an ORS response MAY be
any key trusted by the client for this purpose. The means by which this key is
established is beyond the scope of the document. Such keys include:
1. the key used to sign the subject certificate;
2. a key associated with the CA (i.e. a CA's "OCSP Signing" key);
3. a key certified by the issuing CA as an Authorized Responder; or
4. a key otherwise trusted by the requestor.
The key that signs a certificate's status information need not be the same key
that signed the certificate. A certificate's issuer explicitly delegates OCSP
signing authority by issuing a certificate containing a unique value for
extendedKeyUsage in the OCSP signer's certificate. This certificate MUST be
issued directly to the responder by the cognizant CA.
Responders MAY pre-produce signed responses. The time at which the status was
known to be correct SHALL be reflected in the thisUpdate field of the response.
The time at or before which newer information will be available SHALL be
indicated in the nextUpdate field. The time at which the response was produced
SHALL appear in the producedAt field.
5.2.3 Interpretation of Time-related Fields
The thisUpdate, nextUpdate and producedAt fields SHALL be interpreted as
follows:
- thisUpdate: The time at which the status being indicated is known
to be correct
- nextUpdate: The time at or before which newer information will be
available about the status of the certificate
- producedAt: The time at which the responder signed the response.
Myers, et al. [Page 12]
Internet Draft OCSPv2 March 2001
If nextUpdate is not set, the responder is indicating that newer revocation
information is available all the time.
The thisUpdate and nextUpdate fields define a recommended validity interval. If
CRLs are used as the basis for basic response production, this interval
corresponds to the {thisUpdate, nextUpdate} interval in those CRLs; otherwise it
corresponds to equivalent database management functions.
Responses whose nextUpdate value is earlier than the local system time value
SHOULD be considered unreliable. Responses whose thisUpdate time is later than
the local system time SHOULD be considered unreliable. Responses where the
nextUpdate value is not set are equivalent to a CRL with no time for nextUpdate.
5.2.4 Other Fields
When the byKey CHOICE of ResponderID is used, the value for KeyHash SHALL be
calculated over the value of the BIT STRING subjectPublicKey key field
(excluding tag and length) in the issuer's certificate.
5.2.5 CA Key Revocation
If a responder knows that a particular CA's private key has been revoked, it MAY
return the "revoked" state for all certificates issued by that CA.
6. Delegated Path Validation
This section identifies and defines the Delegated Path Validation (DPV) service.
This service may be useful to environments that wish to offload [RFC2459]-
compliant certificate validation functions to a centralized server.
6.1 Request
A DPV request SHALL include a value of id-pkix-ocsp-valid-req in the
requestExtensions field of TBSRequest.
id-pkix-ocsp-valid-req OBJECT IDENTIFIER ::= { id-pkix-ocsp X }
The corresponding value of the associated requestExtensions element SHALL
contain the following:
DPVOptions :: = SEQUENCE{
pathParams PathParameters OPTIONAL,
validAt [2] GeneralizedTime OPTIONAL,
revInfo [3] SEQUENCE OF RevocationInfo OPTIONAL,
dPVFLags [4] DPVFlags OPTIONAL }
PathParameters ::= SEQUENCE {
initialPolicySet [0] PolicyList OPTIONAL,
trustPoints [1] SEQUENCE OF ReqCert OPTIONAL }
Myers, et al. [Page 13]
Internet Draft OCSPv2 March 2001
DPVFlags ::= BIT STRING {
returnpath (0),
returnrevinfo (1),
returntsp (2),
returnpolicy (3) }
RevocationInfo ::= CHOICE {
cRL CertificateList,
oCSP OCSPResponse }
PolicyList ::= SEQUENCE SIZE (1..MAX) OF OBJECT IDENTIFIER
The initialPolicySet option enables a requestor to establish one or more initial
policy identifiers as defined in [RFC2459]. Definition of such policies is
beyond the scope of this specification.
The trustPoints option enables specification of one or more certificates
relevant to the relying party's trust model. If included, a successful
validation request will pass through at least one of these trust points, else an
"unknown" response will be generated.
A client request MAY specify the time relative to which the validation is to be
performed. If omitted, the current time SHALL be assumed.
6.2 Response
A DPV response SHALL contain a value of id-pkix-ocsp-valid-rsp in the
ResponseType field of the ResponseBytes syntax.
id-pkix-ocsp-valid-rsp OBJECT IDENTIFIER ::= { id-pkix-ocsp X }
The responseBytes field of an DPV response SHALL be composed of the
BasicOCSPResponse syntax defined in Section 3.2.1 of this document.
Servers that produce DPV responses SHALL execute path validation logic that
produces outputs compliant with [RFC2459].
6.2.1 Interpretation of CertStatus Field
The CertStatus field of BasicOCSPResponse SHALL be interpreted as follows when
the value of responseType is id-pkix-ocsp-valid.
DPVCertStatus ::= CHOICE {
valid [0] IMPLICIT NULL,
invalid [1] IMPLICIT NULL,
unknown [2] IMPLICIT NULL }
The "valid" state SHALL be interpreted as indicating that the certificate at a
minimum satisfies the path validation rules defined in [RFC2459]. Servers MAY
further predicate production of a "valid" response upon additional and locally-
defined authorization criteria.
Myers, et al. [Page 14]
Internet Draft OCSPv2 March 2001
The "invalid" state SHALL be interpreted as indicating that the subject
certificate does not satisfy one or more conditions necessary to the production
of a "valid" state.
The "unknown" state SHALL be interpreted as indicating that the server has no
knowledge of the subject certificate.
If a DPV request contains a non-NULL value for initialPolicySet, all OIDs
included in that set SHALL be used as initial policy identifier values in the
validation logic according to [RFC2459].
If a DPV request contains a non-NULL value for trustPoints, the receiving server
SHALL attempt to produce a response that incorporates these certificates. If
the receiving server cannot form such a path, the server SHALL return a status
value of "unknown" in the response.
6.3 Processing Considerations
[additional work needed on the various options]
7. Delegated Path Discovery
The path validation logic defined by [RFC2459] requires certificate-processing
systems to accumulate the set of certificates from which certificate chains may
be constructed as well as revocation data for each such certificate. These data
may originate from diverse sources. Commonly used technologies for retrieving
this information include X.500, LDAP, HTTP, FTP among other methods. Delegating
this acquisition process to a separate server greatly simplifies and reduces the
size of public-key based credential validation systems or other relying party
software. It may also be useful to such software to be able to select from
among various trust paths in the event multiple paths exist. The Delegated Path
Discovery (DPD) service addresses these needs.
7.1 Request
A DPD request SHALL contain a value of id-pkix-ocsp-path-req in the ResponseType
field of the ResponseBytes syntax.
id-pkix-ocsp-path-req OBJECT IDENTIFIER ::= { id-pkix-ocsp X }
The corresponding value of the associated requestExtensions element SHALL
contain the following:
DPDOptions :: = SEQUENCE{
retryReference OCTET STRING,
initialPolicySet [0] EXPLICIT PolicyList OPTIONAL,
trustPoints [1] SEQUENCE OF ReqCert OPTIONAL,
validAt [2] GeneralizedTime OPTIONAL,
dDPFlags [3] DPDFlags OPTIONAL}
Myers, et al. [Page 15]
Internet Draft OCSPv2 March 2001
DPDFlags ::= BIT STRING {
returnTSP (0),
returnpolicy (1),
crlonly (2),
ocsponly (3),
either (4) }
The RetryReference enables a requestor to acquire the next of potentially
several valid paths known to the OCSP server based on a previous response. If
this field is omitted then the request is considered to be a "new" request and
the responder may return any path that meets the request criteria. If a client
does specify a RetryReference then the responder SHALL NOT return any path that
was previously returned with that reference (i.e. the responder MUST either
return a different path meeting the request or an error).
7.2 Response
A DPD response SHALL contain a value of id-pkix-ocsp-path-rsp in the
ResponseType field of the ResponseBytes syntax.
id-pkix-ocsp-path-rsp OBJECT IDENTIFIER ::= { id-pkix-ocsp X }
The responseBytes field of a DPD response SHALL consists of the following
information.
DPDOCSPResponse ::= SEQUENCE OF PathResponse
-- one for each certificate included in the requestList field of TBSRequest
PathResponse ::= SEQUENCE {
retryReference BIT STRING,
certificates SEQUENCE OF Certificate,
crls SEQUENCE SIZE (1..MAX) OF CertificateList OPTIONAL,
ocspReps SEQUENCE SIZE (1..MAX) OF OCSPResponse OPTIONAL }
The sequence of certificates SHALL form a potentially valid certification path,
in order, from end-entity certificate (element 0 of the sequence), up to and
including a "final" CA certificate, (which need not, but MAY be self-certified).
The RetryReference SHOULD uniquely refer to all path validation data (including
the data in the current response) that has been returned to the requester with
respect to this request.
The responder MAY also include a set of CRLs and/or OCSP responses which, if
included, SHOULD relate to the certificates in the set of certificates.
Myers, et al. [Page 16]
Internet Draft OCSPv2 March 2001
7.3 Processing Considerations
DPD servers SHALL:
a. Upon receipt of an authorized path discovery request, where possible, deliver
to the requestor a collection of certificates and optionally CRLs and other OCSP
responses that may be used to validate a certificate according to [RFC2459];
b. Either establish a stateful association enabling a requestor to serially ask
for the next path via the retry option, to the extent that multiple validation
paths exist and the receiving OCSP server is aware of these paths or respond
with a noStateMaintained error to all retry requests if the server does not
maintain state; and
c. In the event that the server is stateful and a prior response was the last
path known to the responder, respond to subsequent retry requests with a
noMoreData value in OSCPResponseStatus.
[additional work needed on the various options]
8. Extensions
This section defines several extensions that could be of use in specific
instances. Support for any specific extension is OPTIONAL. Additional
extensions MAY be defined in additional RFCs. Unrecognized extensions MUST be
ignored (unless they have the critical flag set and are not understood).
8.1 Nonce
The nonce cryptographically binds a request and a response to prevent replay
attacks (assuming that the requester-generated nonce is a large random number
that the requester has not used previously). The nonce is included as one
of the requestExtensions in requests, while in responses it would be included as
one of the responseExtensions. In both the request and the response, the nonce
will be identified by the object identifier id-pkix-ocsp-nonce, while the
extnValue is the value of the nonce.
id-pkix-ocsp-nonce OBJECT IDENTIFIER ::= { id-pkix-ocsp 2 }
8.2 CRL References
It may be desirable for the OCSP responder to indicate the CRL on which a
revoked or onHold certificate is found. This can be useful where OCSP is used
between repositories, and also as an auditing mechanism. The CRL may be
specified by a URL (the URL at which the CRL is available), a number (CRL
number) or a time (the time at which the relevant CRL was created). These
extensions will be specified as singleExtensions. The identifier for this
extension will be id-pkix-ocsp-crl, while the value will be CrlID.
id-pkix-ocsp-crl OBJECT IDENTIFIER ::= { id-pkix-ocsp 3 }
Myers, et al. [Page 17]
Internet Draft OCSPv2 March 2001
CrlID ::= SEQUENCE {
crlUrl [0] EXPLICIT IA5String OPTIONAL,
crlNum [1] EXPLICIT INTEGER OPTIONAL,
crlTime [2] EXPLICIT GeneralizedTime OPTIONAL }
For the choice crlUrl, the IA5String will specify the URL at which the CRL is
available. For crlNum, the INTEGER will specify the value of the CRL number
extension of the relevant CRL. For crlTime, the GeneralizedTime will indicate
the time at which the relevant CRL was issued.
8.3 Acceptable Response Types
An OCSP client MAY wish to specify the kinds of response types it understands.
To do so, it SHOULD use an extension with the OID id-pkix-ocsp-response, and the
value AcceptableResponses. This extension is included as one of the
requestExtensions in requests. The OIDs included in AcceptableResponses are the
OIDs of the various response types this client can accept (e.g., id-pkix-ocsp-
basic).
id-pkix-ocsp-response OBJECT IDENTIFIER ::= { id-pkix-ocsp 4 }
AcceptableResponses ::= SEQUENCE OF OBJECT IDENTIFIER
8.4 Archive Cutoff
An OCSP responder MAY retain information relevant to a certificate's validity
beyond a certificate's expiration. The date obtained by subtracting this
retention interval value from the producedAt time in an ORS or DPV response is
defined as the certificate's "archive cutoff" date. Applications would use an
archive cutoff date to contribute to a proof that a digital signature was (or
was not) reliable on the date it was produced even if the certificate needed to
validate the signature has long since expired. OCSP servers SHOULD include an
archive cutoff date extension in responses where applicable. If included, this
value SHALL be provided as an OCSP singleExtensions extension identified by id-
pkix-ocsp-archive-cutoff and of syntax GeneralizedTime.
id-pkix-ocsp-archive-cutoff OBJECT IDENTIFIER ::= { id-pkix-ocsp 6 }
ArchiveCutoff ::= GeneralizedTime
To illustrate, if a server is operated with a 7-year retention interval policy
and status was produced at time t1 then the value for ArchiveCutoff in the
response would be (t1 - 7 years).
8.5 Service Locator
An OCSP server may be operated in a mode whereby the server receives a request
and routes it to the OCSP server which is known to be authoritative for the
identified certificate. The serviceLocator request extension is defined for
this purpose. This extension is included as one of the singleRequestExtensions
in requests.
id-pkix-ocsp-service-locator OBJECT IDENTIFIER ::= { id-pkix-ocsp 7 }
Myers, et al. [Page 18]
Internet Draft OCSPv2 March 2001
ServiceLocator ::= SEQUENCE {
issuer Name,
locator AuthorityInfoAccessSyntax OPTIONAL }
Values for these fields are obtained from the corresponding fields in the
subject certificate.
8.6 CRL Entry Extensions
All the extensions specified as CRL Entry Extensions - in Section 5.3 of
[RFC2459] - are also supported as singleExtensions.
9. Security Considerations
For this service to be effective, certificate using systems must connect to the
certificate status service provider. In the event such a connection cannot be
obtained, certificate-using systems could implement CRL processing logic as a
fall-back position.
A denial of service vulnerability is evident with respect to a flood of queries.
The production of a cryptographic signature significantly affects response
generation cycle time, thereby exacerbating the situation. Unsigned error
responses open up the protocol to another denial of service attack, where the
attacker sends false error responses.
The use of precomputed responses allows replay attacks in which an old (good)
response is replayed prior to its expiration date but after the certificate has
been revoked. Deployments of OCSP should carefully evaluate the benefit of
precomputed responses against the probability of a replay attack and the costs
associated with its successful execution.
Requests do not contain the responder they are directed to. This allows an
attacker to replay a request to any number of OCSP responders.
The reliance of HTTP caching in some deployment scenarios may result in
unexpected results if intermediate servers are incorrectly configured or are
known to possess cache management faults.
Implementors are advised to take the reliability of HTTP cache mechanisms into
account when deploying OCSP over HTTP.
10. Acknowledgments
The authors appreciate the hard work of all members of the IETF PKIX Working
Group in refining the text of this specification. We extend special thanks to
Denis Pinkas, Ambarish Malpani, and Peter Gutman for their efforts and support.
11. References
[RFC2459] Housley, R., Ford, W., Polk, W. and D. Solo, "Internet
X.509 Public Key Infrastructure Certificate and CRL
Profile", RFC 2459, January 1999.
Myers, et al. [Page 19]
Internet Draft OCSPv2 March 2001
[HTTP] Fielding, R., Gettys, J., Mogul, J., Frystyk, H. and T.
Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC
2068, January 1997.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[URL] Berners-Lee, T., Masinter, L. and M. McCahill, "Uniform
Resource Locators (URL)", RFC 1738, December 1994.
[X.690] ITU-T Recommendation X.690 (1994) | ISO/IEC 8825-1:1995,
Information Technology - ASN.1 encoding rules:
Specification of Basic Encoding Rules (BER), Canonical
Encoding Rules (CER) and Distinguished Encoding Rules
(DER).
[ACPROF] Farrell, S., Housley, R., "An Internet Attribute Certificate
Profile for Authorization", Internet Draft draft-ietf-pkix-
ac509prof-xx.txt (work in progress).
[SHA1] National Institute of Standards and Technology.
FIPS Pub 180-1: Secure Hash Standard. 17 April 1995.
[RFC2437] Kaliski, B., "PKCS #1: RSA Encryption, Version 2.0",
RFC 2437, October 1998.
[DSS] National Institute of Standards and Technology.
FIPS Pub 186: Digital Signature Standard. 19 May 1994.
12. Authors' Addresses
Michael Myers
TraceRoute Security, Inc.
myers@coastside.net
+415.819.1362
Rich Ankney
rankney@erols.com
Carlisle Adams
Entrust Technologies
cadams@entrust.com
13. Appendix A. OCSP over HTTP
A.1 OCSP over HTTP
This section describes the formatting that will be done to the
request and response to support HTTP.
Myers, et al. [Page 20]
Internet Draft OCSPv2 March 2001
A.1.1 Request
HTTP based OCSP requests can use either the GET or the POST method to
submit their requests. To enable HTTP caching, small requests (that
after encoding are less than 255 bytes), MAY be submitted using GET.
If HTTP caching is not important, or the request is greater than 255
bytes, the request SHOULD be submitted using POST. Where privacy is
a requirement, OCSP transactions exchanged using HTTP MAY be
protected using either TLS/SSL or some other lower layer protocol.
An OCSP request using the GET method is constructed as follows:
GET {url}/{url-encoding of base-64 encoding of the DER encoding of
the OCSPRequest}
where {url} may be derived from the value of AuthorityInfoAccess or
other local configuration of the OCSP client.
An OCSP request using the POST method is constructed as follows: The
Content-Type header has the value "application/ocsp-request" while
the body of the message is the binary value of the DER encoding of
the OCSPRequest.
A.1.2 Response
An HTTP-based OCSP response is composed of the appropriate HTTP
headers, followed by the binary value of the DER encoding of the
OCSPResponse. The Content-Type header has the value
"application/ocsp-response". The Content-Length header SHOULD specify
the length of the response. Other HTTP headers MAY be present and MAY
be ignored if not understood by the requestor.
14. Appendix B. OCSP in ASN.1
[MODULE TO BE AGGREGATED AND IDENTIFIED]
15. Appendix C. MIME registrations
C.1 application/ocsp-request
To: ietf-types@iana.org
Subject: Registration of MIME media type application/ocsp-request
MIME media type name: application
MIME subtype name: ocsp-request
Required parameters: None
Optional parameters: None
Encoding considerations: binary
Myers, et al. [Page 21]
Internet Draft OCSPv2 March 2001
Security considerations: Carries a request for information. This
request may optionally be cryptographically signed.
Interoperability considerations: None
Published specification: IETF PKIX Working Group Draft on Online
Certificate Status Protocol - OCSP
Applications which use this media type: OCSP clients
Additional information:
Magic number(s): None
File extension(s): .ORQ
Macintosh File Type Code(s): none
Person & email address to contact for further information:
Ambarish Malpani <ambarish@valicert.com>
Intended usage: COMMON
Author/Change controller:
Ambarish Malpani <ambarish@valicert.com>
C.2 application/ocsp-response
To: ietf-types@iana.org
Subject: Registration of MIME media type application/ocsp-response
MIME media type name: application
MIME subtype name: ocsp-response
Required parameters: None
Optional parameters: None
Encoding considerations: binary
Security considerations: Carries a cryptographically signed response
Interoperability considerations: None
Published specification: IETF PKIX Working Group Draft on Online
Certificate Status Protocol - OCSP
Applications which use this media type: OCSP servers
Additional information:
Magic number(s): None
File extension(s): .ORS
Macintosh File Type Code(s): none
Myers, et al. [Page 22]
Internet Draft OCSPv2 March 2001
Person & email address to contact for further information:
Ambarish Malpani <ambarish@valicert.com>
Intended usage: COMMON
Author/Change controller:
Ambarish Malpani ambarish@valicert.com
Myers, et al. [Page 23]