123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236 |
- Network Working Group A. Deacon
- Request for Comments: 5019 VeriSign
- Category: Standards Track R. Hurst
- Microsoft
- September 2007
- The Lightweight Online Certificate Status Protocol (OCSP) Profile
- for High-Volume Environments
- Status of This Memo
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
- Abstract
- This specification defines a profile of the Online Certificate Status
- Protocol (OCSP) that addresses the scalability issues inherent when
- using OCSP in large scale (high volume) Public Key Infrastructure
- (PKI) environments and/or in PKI environments that require a
- lightweight solution to minimize communication bandwidth and client-
- side processing.
- Deacon & Hurst Standards Track [Page 1]
- RFC 5019 Lightweight OCSP Profile September 2007
- Table of Contents
- 1. Introduction ....................................................3
- 1.1. Requirements Terminology ...................................4
- 2. OCSP Message Profile ............................................4
- 2.1. OCSP Request Profile .......................................4
- 2.1.1. OCSPRequest Structure ...............................4
- 2.1.2. Signed OCSPRequests .................................5
- 2.2. OCSP Response Profile ......................................5
- 2.2.1. OCSPResponse Structure ..............................5
- 2.2.2. Signed OCSPResponses ................................6
- 2.2.3. OCSPResponseStatus Values ...........................6
- 2.2.4. thisUpdate, nextUpdate, and producedAt ..............7
- 3. Client Behavior .................................................7
- 3.1. OCSP Responder Discovery ...................................7
- 3.2. Sending an OCSP Request ....................................7
- 4. Ensuring an OCSPResponse Is Fresh ...............................8
- 5. Transport Profile ...............................................9
- 6. Caching Recommendations .........................................9
- 6.1. Caching at the Client .....................................10
- 6.2. HTTP Proxies ..............................................10
- 6.3. Caching at Servers ........................................12
- 7. Security Considerations ........................................12
- 7.1. Replay Attacks ............................................12
- 7.2. Man-in-the-Middle Attacks .................................13
- 7.3. Impersonation Attacks .....................................13
- 7.4. Denial-of-Service Attacks .................................13
- 7.5. Modification of HTTP Headers ..............................14
- 7.6. Request Authentication and Authorization ..................14
- 8. Acknowledgements ...............................................14
- 9. References .....................................................14
- 9.1. Normative References ......................................14
- 9.2. Informative References ....................................15
- Appendix A. Example OCSP Messages .................................16
- A.1. OCSP Request ..............................................16
- A.2. OCSP Response .............................................16
- Deacon & Hurst Standards Track [Page 2]
- RFC 5019 Lightweight OCSP Profile September 2007
- 1. Introduction
- The Online Certificate Status Protocol [OCSP] specifies a mechanism
- used to determine the status of digital certificates, in lieu of
- using Certificate Revocation Lists (CRLs). Since its definition in
- 1999, it has been deployed in a variety of environments and has
- proven to be a useful certificate status checking mechanism. (For
- brevity we refer to OCSP as being used to verify certificate status,
- but only the revocation status of a certificate is checked via this
- protocol.)
- To date, many OCSP deployments have been used to ensure timely and
- secure certificate status information for high-value electronic
- transactions or highly sensitive information, such as in the banking
- and financial environments. As such, the requirement for an OCSP
- responder to respond in "real time" (i.e., generating a new OCSP
- response for each OCSP request) has been important. In addition,
- these deployments have operated in environments where bandwidth usage
- is not an issue, and have run on client and server systems where
- processing power is not constrained.
- As the use of PKI continues to grow and move into diverse
- environments, so does the need for a scalable and cost-effective
- certificate status mechanism. Although OCSP as currently defined and
- deployed meets the need of small to medium-sized PKIs that operate on
- powerful systems on wired networks, there is a limit as to how these
- OCSP deployments scale from both an efficiency and cost perspective.
- Mobile environments, where network bandwidth may be at a premium and
- client-side devices are constrained from a processing point of view,
- require the careful use of OCSP to minimize bandwidth usage and
- client-side processing complexity. [OCSPMP]
- PKI continues to be deployed into environments where millions if not
- hundreds of millions of certificates have been issued. In many of
- these environments, an even larger number of users (also known as
- relying parties) have the need to ensure that the certificate they
- are relying upon has not been revoked. As such, it is important that
- OCSP is used in such a way that ensures the load on OCSP responders
- and the network infrastructure required to host those responders are
- kept to a minimum.
- This document addresses the scalability issues inherent when using
- OCSP in PKI environments described above by defining a message
- profile and clarifying OCSP client and responder behavior that will
- permit:
- Deacon & Hurst Standards Track [Page 3]
- RFC 5019 Lightweight OCSP Profile September 2007
- 1) OCSP response pre-production and distribution.
- 2) Reduced OCSP message size to lower bandwidth usage.
- 3) Response message caching both in the network and on the client.
- It is intended that the normative requirements defined in this
- profile will be adopted by OCSP clients and OCSP responders operating
- in very large-scale (high-volume) PKI environments or PKI
- environments that require a lightweight solution to minimize
- bandwidth and client-side processing power (or both), as described
- above. As OCSP does not have the means to signal responder
- capabilities within the protocol, clients needing to differentiate
- between OCSP responses produced by responders conformant with this
- profile and those that are not need to rely on out-of-band mechanisms
- to determine when a responder operates according to this profile and,
- as such, when the requirements of this profile apply. In the case
- where out-of-band mechanisms may not be available, this profile
- ensures that interoperability will still occur between a fully
- conformant OCSP 2560 client and a responder that is operating in a
- mode as described in this specification.
- 1.1. Requirements Terminology
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in [RFC2119].
- 2. OCSP Message Profile
- This section defines a subset of OCSPRequest and OCSPResponse
- functionality as defined in [OCSP].
- 2.1. OCSP Request Profile
- 2.1.1. OCSPRequest Structure
- OCSPRequests conformant to this profile MUST include only one Request
- in the OCSPRequest.RequestList structure.
- Clients MUST use SHA1 as the hashing algorithm for the
- CertID.issuerNameHash and the CertID.issuerKeyHash values.
- Clients MUST NOT include the singleRequestExtensions structure.
- Clients SHOULD NOT include the requestExtensions structure. If a
- requestExtensions structure is included, this profile RECOMMENDS that
- it contain only the nonce extension (id-pkix-ocsp-nonce). See
- Section 4 for issues concerning the use of a nonce in high-volume
- OCSP environments.
- Deacon & Hurst Standards Track [Page 4]
- RFC 5019 Lightweight OCSP Profile September 2007
- 2.1.2. Signed OCSPRequests
- Clients SHOULD NOT send signed OCSPRequests. Responders MAY ignore
- the signature on OCSPRequests.
- If the OCSPRequest is signed, the client SHALL specify its name in
- the OCSPRequest.requestorName field; otherwise, clients SHOULD NOT
- include the requestorName field in the OCSPRequest. OCSP servers
- MUST be prepared to receive unsigned OCSP requests that contain the
- requestorName field, but must realize that the provided value is not
- authenticated.
- 2.2. OCSP Response Profile
- 2.2.1. OCSPResponse Structure
- Responders MUST generate a BasicOCSPResponse as identified by the
- id-pkix-ocsp-basic OID. Clients MUST be able to parse and accept a
- BasicOCSPResponse. OCSPResponses conformant to this profile SHOULD
- include only one SingleResponse in the ResponseData.responses
- structure, but MAY include additional SingleResponse elements if
- necessary to improve response pre-generation performance or cache
- efficiency.
- The responder SHOULD NOT include responseExtensions. As specified in
- [OCSP], clients MUST ignore unrecognized non-critical
- responseExtensions in the response.
- In the case where a responder does not have the ability to respond to
- an OCSP request containing a option not supported by the server, it
- SHOULD return the most complete response it can. For example, in the
- case where a responder only supports pre-produced responses and does
- not have the ability to respond to an OCSP request containing a
- nonce, it SHOULD return a response that does not include a nonce.
- Clients SHOULD attempt to process a response even if the response
- does not include a nonce. See Section 4 for details on validating
- responses that do not contain a nonce. See also Section 7 for
- relevant security considerations.
- Responders that do not have the ability to respond to OCSP requests
- that contain an unsupported option such as a nonce MAY forward the
- request to an OCSP responder capable of doing so.
- The responder MAY include the singleResponse.singleResponse
- extensions structure.
- Deacon & Hurst Standards Track [Page 5]
- RFC 5019 Lightweight OCSP Profile September 2007
- 2.2.2. Signed OCSPResponses
- Clients MUST validate the signature on the returned OCSPResponse.
- If the response is signed by a delegate of the issuing certification
- authority (CA), a valid responder certificate MUST be referenced in
- the BasicOCSPResponse.certs structure.
- It is RECOMMENDED that the OCSP responder's certificate contain the
- id-pkix-ocsp-nocheck extension, as defined in [OCSP], to indicate to
- the client that it need not check the certificate's status. In
- addition, it is RECOMMENDED that neither an OCSP authorityInfoAccess
- (AIA) extension nor cRLDistributionPoints (CRLDP) extension be
- included in the OCSP responder's certificate. Accordingly, the
- responder's signing certificate SHOULD be relatively short-lived and
- renewed regularly.
- Clients MUST be able to identify OCSP responder certificates using
- both the byName and byKey ResponseData.ResponderID choices.
- Responders SHOULD use byKey to further reduce the size of the
- response in scenarios where reducing bandwidth is an issue.
- 2.2.3. OCSPResponseStatus Values
- As long as the OCSP infrastructure has authoritative records for a
- particular certificate, an OCSPResponseStatus of "successful" will be
- returned. When access to authoritative records for a particular
- certificate is not available, the responder MUST return an
- OCSPResponseStatus of "unauthorized". As such, this profile extends
- the RFC 2560 [OCSP] definition of "unauthorized" as follows:
- The response "unauthorized" is returned in cases where the client
- is not authorized to make this query to this server or the server
- is not capable of responding authoritatively.
- For example, OCSP responders that do not have access to authoritative
- records for a requested certificate, such as those that generate and
- distribute OCSP responses in advance and thus do not have the ability
- to properly respond with a signed "successful" yet "unknown"
- response, will respond with an OCSPResponseStatus of "unauthorized".
- Also, in order to ensure the database of revocation information does
- not grow unbounded over time, the responder MAY remove the status
- records of expired certificates. Requests from clients for
- certificates whose record has been removed will result in an
- OCSPResponseStatus of "unauthorized".
- Security considerations regarding the use of unsigned responses are
- discussed in [OCSP].
- Deacon & Hurst Standards Track [Page 6]
- RFC 5019 Lightweight OCSP Profile September 2007
- 2.2.4. thisUpdate, nextUpdate, and producedAt
- When pre-producing OCSPResponse messages, the responder MUST set the
- thisUpdate, nextUpdate, and producedAt times 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.
- Responders MUST always include this value to aid in
- response caching. See Section 6 for additional
- information on caching.
- producedAt The time at which the OCSP response was signed.
- Note: In many cases the value of thisUpdate and producedAt will be
- the same.
- For the purposes of this profile, ASN.1-encoded GeneralizedTime
- values such as thisUpdate, nextUpdate, and producedAt MUST be
- expressed Greenwich Mean Time (Zulu) and MUST include seconds (i.e.,
- times are YYYYMMDDHHMMSSZ), even where the number of seconds is zero.
- GeneralizedTime values MUST NOT include fractional seconds.
- 3. Client Behavior
- 3.1. OCSP Responder Discovery
- Clients MUST support the authorityInfoAccess extension as defined in
- [PKIX] and MUST recognize the id-ad-ocsp access method. This enables
- CAs to inform clients how they can contact the OCSP service.
- In the case where a client is checking the status of a certificate
- that contains both an authorityInformationAccess (AIA) extension
- pointing to an OCSP responder and a cRLDistributionPoints extension
- pointing to a CRL, the client SHOULD attempt to contact the OCSP
- responder first. Clients MAY attempt to retrieve the CRL if no
- OCSPResponse is received from the responder after a locally
- configured timeout and number of retries.
- 3.2. Sending an OCSP Request
- To avoid needless network traffic, applications MUST verify the
- signature of signed data before asking an OCSP client to check the
- status of certificates used to verify the data. If the signature is
- invalid or the application is not able to verify it, an OCSP check
- MUST NOT be requested.
- Deacon & Hurst Standards Track [Page 7]
- RFC 5019 Lightweight OCSP Profile September 2007
- Similarly, an application MUST validate the signature on certificates
- in a chain, before asking an OCSP client to check the status of the
- certificate. If the certificate signature is invalid or the
- application is not able to verify it, an OCSP check MUST NOT be
- requested. Clients SHOULD NOT make a request to check the status of
- expired certificates.
- 4. Ensuring an OCSPResponse Is Fresh
- In order to ensure that a client does not accept an out-of-date
- response that indicates a 'good' status when in fact there is a more
- up-to-date response that specifies the status of 'revoked', a client
- must ensure the responses they receive are fresh.
- In general, two mechanisms are available to clients to ensure a
- response is fresh. The first uses nonces, and the second is based on
- time. In order for time-based mechanisms to work, both clients and
- responders MUST have access to an accurate source of time.
- Because this profile specifies that clients SHOULD NOT include a
- requestExtensions structure in OCSPRequests (see Section 2.1),
- clients MUST be able to determine OCSPResponse freshness based on an
- accurate source of time. Clients that opt to include a nonce in the
- request SHOULD NOT reject a corresponding OCSPResponse solely on the
- basis of the nonexistent expected nonce, but MUST fall back to
- validating the OCSPResponse based on time.
- Clients that do not include a nonce in the request MUST ignore any
- nonce that may be present in the response.
- Clients MUST check for the existence of the nextUpdate field and MUST
- ensure the current time, expressed in GMT time as described in
- Section 2.2.4, falls between the thisUpdate and nextUpdate times. If
- the nextUpdate field is absent, the client MUST reject the response.
- If the nextUpdate field is present, the client MUST ensure that it is
- not earlier than the current time. If the current time on the client
- is later than the time specified in the nextUpdate field, the client
- MUST reject the response as stale. Clients MAY allow configuration
- of a small tolerance period for acceptance of responses after
- nextUpdate to handle minor clock differences relative to responders
- and caches. This tolerance period should be chosen based on the
- accuracy and precision of time synchronization technology available
- to the calling application environment. For example, Internet peers
- with low latency connections typically expect NTP time
- synchronization to keep them accurate within parts of a second;
- higher latency environments or where an NTP analogue is not available
- may have to be more liberal in their tolerance.
- Deacon & Hurst Standards Track [Page 8]
- RFC 5019 Lightweight OCSP Profile September 2007
- See the security considerations in Section 7 for additional details
- on replay and man-in-the-middle attacks.
- 5. Transport Profile
- The OCSP responder MUST support requests and responses over HTTP.
- When sending requests that are less than or equal to 255 bytes in
- total (after encoding) including the scheme and delimiters (http://),
- server name and base64-encoded OCSPRequest structure, clients MUST
- use the GET method (to enable OCSP response caching). OCSP requests
- larger than 255 bytes SHOULD be submitted using the POST method. In
- all cases, clients MUST follow the descriptions in A.1.1 of [OCSP]
- when constructing these messages.
- When constructing a GET message, OCSP clients MUST base64 encode the
- OCSPRequest structure and append it to the URI specified in the AIA
- extension [PKIX]. Clients MUST NOT include CR or LF characters in
- the base64-encoded string. Clients MUST properly URL-encode the
- base64 encoded OCSPRequest. For example:
- http://ocsp.example.com/MEowSDBGMEQwQjAKBggqhkiG9w0CBQQQ7sp6GTKpL
- 2dAdeGaW267owQQqInESWQD0mGeBArSgv%2FBWQIQLJx%2Fg9xF8oySYzol80Mbpg
- %3D%3D
- In response to properly formatted OCSPRequests that are cachable
- (i.e., responses that contain a nextUpdate value), the responder will
- include the binary value of the DER encoding of the OCSPResponse
- preceded by the following HTTP [HTTP] headers.
- content-type: application/ocsp-response
- content-length: <OCSP response length>
- last-modified: <producedAt [HTTP] date>
- ETag: "<strong validator>"
- expires: <nextUpdate [HTTP] date>
- cache-control: max-age=<n>, public, no-transform, must-revalidate
- date: <current [HTTP] date>
- See Section 6.2 for details on the use of these headers.
- 6. Caching Recommendations
- The ability to cache OCSP responses throughout the network is an
- important factor in high volume OCSP deployments. This section
- discusses the recommended caching behavior of OCSP clients and HTTP
- proxies and the steps that should be taken to minimize the number of
- times that OCSP clients "hit the wire". In addition, the concept of
- including OCSP responses in protocol exchanges (aka stapling or
- piggybacking), such as has been defined in TLS, is also discussed.
- Deacon & Hurst Standards Track [Page 9]
- RFC 5019 Lightweight OCSP Profile September 2007
- 6.1. Caching at the Client
- To minimize bandwidth usage, clients MUST locally cache authoritative
- OCSP responses (i.e., a response with a signature that has been
- successfully validated and that indicate an OCSPResponseStatus of
- 'successful').
- Most OCSP clients will send OCSPRequests at or near the nextUpdate
- time (when a cached response expires). To avoid large spikes in
- responder load that might occur when many clients refresh cached
- responses for a popular certificate, responders MAY indicate when the
- client should fetch an updated OCSP response by using the cache-
- control:max-age directive. Clients SHOULD fetch the updated OCSP
- Response on or after the max-age time. To ensure that clients
- receive an updated OCSP response, OCSP responders MUST refresh the
- OCSP response before the max-age time.
- 6.2. HTTP Proxies
- The responder SHOULD set the HTTP headers of the OCSP response in
- such a way as to allow for the intelligent use of intermediate HTTP
- proxy servers. See [HTTP] for the full definition of these headers
- and the proper format of any date and time values.
- HTTP Header Description
- =========== ====================================================
- date The date and time at which the OCSP server generated
- the HTTP response.
- last-modified This value specifies the date and time at which the
- OCSP responder last modified the response. This date
- and time will be the same as the thisUpdate timestamp
- in the request itself.
- expires Specifies how long the response is considered fresh.
- This date and time will be the same as the nextUpdate
- timestamp in the OCSP response itself.
- ETag A string that identifies a particular version of the
- associated data. This profile RECOMMENDS that the
- ETag value be the ASCII HEX representation of the
- SHA1 hash of the OCSPResponse structure.
- cache-control Contains a number of caching directives.
- * max-age=<n> -where n is a time value later than
- thisUpdate but earlier than
- nextUpdate.
- Deacon & Hurst Standards Track [Page 10]
- RFC 5019 Lightweight OCSP Profile September 2007
- * public -makes normally uncachable response
- cachable by both shared and nonshared
- caches.
- * no-transform -specifies that a proxy cache cannot
- change the type, length, or encoding
- of the object content.
- * must-revalidate -prevents caches from intentionally
- returning stale responses.
- OCSP responders MUST NOT include a "Pragma: no-cache", "Cache-
- Control: no-cache", or "Cache-Control: no-store" header in
- authoritative OCSP responses.
- OCSP responders SHOULD include one or more of these headers in non-
- authoritative OCSP responses.
- For example, assume that an OCSP response has the following timestamp
- values:
- thisUpdate = May 1, 2005 01:00:00 GMT
- nextUpdate = May 3, 2005 01:00:00 GMT
- productedAt = May 1, 2005 01:00:00 GMT
- and that an OCSP client requests the response on May 2, 2005 01:00:00
- GMT. In this scenario, the HTTP response may look like this:
- content-type: application/ocsp-response
- content-length: 1000
- date: Fri, 02 May 2005 01:00:00 GMT
- last-modified: Thu, 01 May 2005 01:00:00 GMT
- ETag: "c66c0341abd7b9346321d5470fd0ec7cc4dae713"
- expires: Sat, 03 May 2005 01:00:00 GMT
- cache-control: max-age=86000,public,no-transform,must-revalidate
- <...>
- OCSP clients MUST NOT include a no-cache header in OCSP request
- messages, unless the client encounters an expired response which may
- be a result of an intermediate proxy caching stale data. In this
- situation, clients SHOULD resend the request specifying that proxies
- should be bypassed by including an appropriate HTTP header in the
- request (i.e., Pragma: no-cache or Cache-Control: no-cache).
- Deacon & Hurst Standards Track [Page 11]
- RFC 5019 Lightweight OCSP Profile September 2007
- 6.3. Caching at Servers
- In some scenarios, it is advantageous to include OCSP response
- information within the protocol being utilized between the client and
- server. Including OCSP responses in this manner has a few attractive
- effects.
- First, it allows for the caching of OCSP responses on the server,
- thus lowering the number of hits to the OCSP responder.
- Second, it enables certificate validation in the event the client is
- not connected to a network and thus eliminates the need for clients
- to establish a new HTTP session with the responder.
- Third, it reduces the number of round trips the client needs to make
- in order to complete a handshake.
- Fourth, it simplifies the client-side OCSP implementation by enabling
- a situation where the client need only the ability to parse and
- recognize OCSP responses.
- This functionality has been specified as an extension to the TLS
- [TLS] protocol in Section 3.6 [TLSEXT], but can be applied to any
- client-server protocol.
- This profile RECOMMENDS that both TLS clients and servers implement
- the certificate status request extension mechanism for TLS.
- Further information regarding caching issues can be obtained from RFC
- 3143 [RFC3143].
- 7. Security Considerations
- The following considerations apply in addition to the security
- considerations addressed in Section 5 of [OCSP].
- 7.1. Replay Attacks
- Because the use of nonces in this profile is optional, there is a
- possibility that an out of date OCSP response could be replayed, thus
- causing a client to accept a good response when in fact there is a
- more up-to-date response that specifies the status of revoked. In
- order to mitigate this attack, clients MUST have access to an
- accurate source of time and ensure that the OCSP responses they
- receive are sufficiently fresh.
- Deacon & Hurst Standards Track [Page 12]
- RFC 5019 Lightweight OCSP Profile September 2007
- Clients that do not have an accurate source of date and time are
- vulnerable to service disruption. For example, a client with a
- sufficiently fast clock may reject a fresh OCSP response. Similarly
- a client with a sufficiently slow clock may incorrectly accept
- expired valid responses for certificates that may in fact be revoked.
- Future versions of the OCSP protocol may provide a way for the client
- to know whether the server supports nonces or does not support
- nonces. If a client can determine that the server supports nonces,
- it MUST reject a reply that does not contain an expected nonce.
- Otherwise, clients that opt to include a nonce in the request SHOULD
- NOT reject a corresponding OCSPResponse solely on the basis of the
- nonexistent expected nonce, but MUST fall back to validating the
- OCSPResponse based on time.
- 7.2. Man-in-the-Middle Attacks
- To mitigate risk associated with this class of attack, the client
- must properly validate the signature on the response.
- The use of signed responses in OCSP serves to authenticate the
- identity of the OCSP responder and to verify that it is authorized to
- sign responses on the CA's behalf.
- Clients MUST ensure that they are communicating with an authorized
- responder by the rules described in [OCSP], Section 4.2.2.2.
- 7.3. Impersonation Attacks
- The use of signed responses in OCSP serves to authenticate the
- identity of OCSP responder.
- As detailed in [OCSP], clients must properly validate the signature
- of the OCSP response and the signature on the OCSP response signer
- certificate to ensure an authorized responder created it.
- 7.4. Denial-of-Service Attacks
- OCSP responders should take measures to prevent or mitigate denial-
- of-service attacks. As this profile specifies the use of unsigned
- OCSPRequests, access to the responder may be implicitly given to
- everyone who can send a request to a responder, and thus the ability
- to mount a denial-of-service attack via a flood of requests may be
- greater. For example, a responder could limit the rate of incoming
- requests from a particular IP address if questionable behavior is
- detected.
- Deacon & Hurst Standards Track [Page 13]
- RFC 5019 Lightweight OCSP Profile September 2007
- 7.5. Modification of HTTP Headers
- Values included in HTTP headers, as described in Sections 5 and 6,
- are not cryptographically protected; they may be manipulated by an
- attacker. Clients SHOULD use these values for caching guidance only
- and ultimately SHOULD rely only on the values present in the signed
- OCSPResponse. Clients SHOULD NOT rely on cached responses beyond the
- nextUpdate time.
- 7.6. Request Authentication and Authorization
- The suggested use of unsigned requests in this environment removes an
- option that allows the responder to determine the authenticity of
- incoming request. Thus, access to the responder may be implicitly
- given to everyone who can send a request to a responder.
- Environments where explicit authorization to access the OCSP
- responder is necessary can utilize other mechanisms to authenticate
- requestors or restrict or meter service.
- 8. Acknowledgements
- The authors wish to thank Magnus Nystrom of RSA Security, Inc.,
- Jagjeet Sondh of Vodafone Group R&D, and David Engberg of CoreStreet,
- Ltd. for their contributions to this specification.
- 9. References
- 9.1. Normative References
- [HTTP] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter,
- L., Leach, P., and T. Berners-Lee, "Hypertext Transfer
- Protocol -- HTTP/1.1", RFC 2616, June 1999.
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
- Requirement Levels", BCP 14, RFC 2119, March 1997.
- [OCSP] Myers, M., Ankney, R., Malpani, A., Galperin, S., and C.
- Adams, "X.509 Internet Public Key Infrastructure: Online
- Certificate Status Protocol - OCSP", RFC 2560, June 1999.
- [PKIX] Housley, R., Polk, W., Ford, W., and D. Solo, "Internet
- Public Key Infrastructure - Certificate and Certificate
- Revocation List (CRL) Profile", RFC 3280, April 2002.
- [TLS] Dierks, T. and E. Rescorla, "The Transport Layer Security
- Protocol Version 1.1", RFC 4346, April 2006.
- Deacon & Hurst Standards Track [Page 14]
- RFC 5019 Lightweight OCSP Profile September 2007
- [TLSEXT] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,
- and T. Wright, "Transport Layer Security (TLS) Extensions",
- RFC 4366, April 2006.
- 9.2. Informative References
- [OCSPMP] "OCSP Mobile Profile V1.0", Open Mobile Alliance,
- www.openmobilealliance.org.
- [RFC3143] Cooper, I. and J. Dilley, "Known HTTP Proxy/Caching
- Problems", RFC 3143, June 2001.
- Deacon & Hurst Standards Track [Page 15]
- RFC 5019 Lightweight OCSP Profile September 2007
- Appendix A. Example OCSP Messages
- A.1. OCSP Request
- SEQUENCE {
- SEQUENCE {
- SEQUENCE {
- SEQUENCE {
- SEQUENCE {
- SEQUENCE {
- OBJECT IDENTIFIER sha1 (1 3 14 3 2 26)
- NULL
- }
- OCTET STRING
- C0 FE 02 78 FC 99 18 88 91 B3 F2 12 E9 C7 E1 B2
- 1A B7 BF C0
- OCTET STRING
- 0D FC 1D F0 A9 E0 F0 1C E7 F2 B2 13 17 7E 6F 8D
- 15 7C D4 F6
- INTEGER
- 09 34 23 72 E2 3A EF 46 7C 83 2D 07 F8 DC 22 BA
- }
- }
- }
- }
- }
- A.2. OCSP Response
- SEQUENCE {
- ENUMERATED 0
- [0] {
- SEQUENCE {
- OBJECT IDENTIFIER ocspBasic (1 3 6 1 5 5 7 48 1 1)
- OCTET STRING, encapsulates {
- SEQUENCE {
- SEQUENCE {
- [0] {
- INTEGER 0
- }
- [1] {
- SEQUENCE {
- SET {
- SEQUENCE {
- OBJECT IDENTIFIER organizationName (2 5 4 10)
- PrintableString 'Example Trust Network'
- }
- }
- Deacon & Hurst Standards Track [Page 16]
- RFC 5019 Lightweight OCSP Profile September 2007
- SET {
- SEQUENCE {
- OBJECT IDENTIFIER
- organizationalUnitName (2 5 4 11)
- PrintableString 'Example, Inc.'
- }
- }
- SET {
- SEQUENCE {
- OBJECT IDENTIFIER
- organizationalUnitName (2 5 4 11)
- PrintableString
- 'Example OCSP Responder'
- }
- }
- }
- }
- GeneralizedTime 07/11/2005 23:52:44 GMT
- SEQUENCE {
- SEQUENCE {
- SEQUENCE {
- SEQUENCE {
- OBJECT IDENTIFIER sha1 (1 3 14 3 2 26)
- NULL
- }
- OCTET STRING
- C0 FE 02 78 FC 99 18 88 91 B3 F2 12 E9 C7 E1 B2
- 1A B7 BF C0
- OCTET STRING
- 0D FC 1D F0 A9 E0 F0 1C E7 F2 B2 13 17 7E 6F 8D
- 15 7C D4 F6
- INTEGER
- 09 34 23 72 E2 3A EF 46 7C 83 2D 07 F8 DC 22 BA
- }
- [0]
- Error: Object has zero length.
- GeneralizedTime 07/11/2005 23:52:44 GMT
- [0] {
- GeneralizedTime 14/11/2005 23:52:44 GMT
- }
- }
- }
- }
- SEQUENCE {
- OBJECT IDENTIFIER
- sha1withRSAEncryption (1 2 840 113549 1 1 5)
- NULL
- }
- Deacon & Hurst Standards Track [Page 17]
- RFC 5019 Lightweight OCSP Profile September 2007
- BIT STRING
- 0E 9F F0 52 B1 A7 42 B8 6E C1 35 E1 0E D5 A9 E2
- F5 C5 3C 16 B1 A3 A7 A2 03 8A 2B 4D 2C F1 B4 98
- 8E 19 DB BA 1E 1E 72 FF 32 F4 44 E0 B2 77 1C D7
- 3C 9E 78 F3 D1 82 68 86 63 12 7F A4 6F F0 4D 84
- EA F8 E2 F7 5D E3 48 44 57 28 80 C7 57 3C FE E1
- 42 0E 5E 17 FC 60 D8 05 D9 EF E2 53 E7 AB 7F 3A
- A8 84 AA 5E 46 5B E7 B8 1F C6 B1 35 AD FF D1 CC
- BA 58 7D E8 29 60 79 F7 41 02 EA E0 82 0E A6 30
- [0] {
- SEQUENCE {
- SEQUENCE {
- SEQUENCE {
- [0] {
- INTEGER 2
- }
- INTEGER
- 49 4A 02 37 1B 1E 70 67 41 6C 9F 06 2F D8 FE DA
- SEQUENCE {
- OBJECT IDENTIFIER
- sha1withRSAEncryption (1 2 840 113549 1 1 5)
- NULL
- }
- SEQUENCE {
- SET {
- SEQUENCE {
- OBJECT IDENTIFIER
- organizationName (2 5 4 10)
- PrintableString 'Example Trust Network'
- }
- }
- SET {
- SEQUENCE {
- OBJECT IDENTIFIER
- organizationalUnitName (2 5 4 11)
- PrintableString 'Example, Inc.'
- }
- }
- SET {
- SEQUENCE {
- OBJECT IDENTIFIER
- organizationalUnitName (2 5 4 11)
- PrintableString
- 'Example CA'
- }
- }
- }
- SEQUENCE {
- Deacon & Hurst Standards Track [Page 18]
- RFC 5019 Lightweight OCSP Profile September 2007
- UTCTime 08/10/2005 00:00:00 GMT
- UTCTime 06/01/2006 23:59:59 GMT
- }
- SEQUENCE {
- SET {
- SEQUENCE {
- OBJECT IDENTIFIER
- organizationName (2 5 4 10)
- PrintableString 'Example Trust Network'
- }
- }
- SET {
- SEQUENCE {
- OBJECT IDENTIFIER
- organizationalUnitName (2 5 4 11)
- PrintableString 'Example, Inc.'
- }
- }
- SET {
- SEQUENCE {
- OBJECT IDENTIFIER
- organizationalUnitName (2 5 4 11)
- PrintableString
- 'Example OCSP Responder'
- }
- }
- }
- SEQUENCE {
- SEQUENCE {
- OBJECT IDENTIFIER
- rsaEncryption (1 2 840 113549 1 1 1)
- NULL
- }
- BIT STRING, encapsulates {
- SEQUENCE {
- INTEGER
- 00 AF C9 7A F5 09 CA D1 08 8C 82 6D AC D9 63 4D
- D2 64 17 79 CB 1E 1C 1C 0C 6E 28 56 B5 16 4A 4A
- 00 1A C1 B0 74 D7 B4 55 9D 2A 99 1F 0E 4A E3 5F
- 81 AF 8D 07 23 C3 30 28 61 3F B0 C8 1D 4E A8 9C
- A6 32 B4 D2 63 EC F7 C1 55 7A 73 2A 51 99 00 D5
- 0F B2 4E 11 5B 83 55 83 4C 0E DD 12 0C BD 7E 41
- 04 3F 5F D9 2A 65 88 3C 2A BA 20 76 1D 1F 59 3E
- D1 85 F7 4B E2 81 50 9C 78 96 1B 37 73 12 1A D2
- [ Another 1 bytes skipped ]
- INTEGER 65537
- }
- }
- Deacon & Hurst Standards Track [Page 19]
- RFC 5019 Lightweight OCSP Profile September 2007
- }
- [3] {
- SEQUENCE {
- SEQUENCE {
- OBJECT IDENTIFIER
- basicConstraints (2 5 29 19)
- OCTET STRING, encapsulates {
- SEQUENCE {}
- }
- }
- SEQUENCE {
- OBJECT IDENTIFIER extKeyUsage (2 5 29 37)
- OCTET STRING, encapsulates {
- SEQUENCE {
- OBJECT IDENTIFIER
- ocspSigning (1 3 6 1 5 5 7 3 9)
- }
- }
- }
- SEQUENCE {
- OBJECT IDENTIFIER keyUsage (2 5 29 15)
- OCTET STRING, encapsulates {
- BIT STRING 7 unused bits
- '1'B (bit 0)
- }
- }
- SEQUENCE {
- OBJECT IDENTIFIER
- ocspNoCheck (1 3 6 1 5 5 7 48 1 5)
- OCTET STRING, encapsulates {
- NULL
- }
- }
- }
- }
- }
- SEQUENCE {
- OBJECT IDENTIFIER
- sha1withRSAEncryption (1 2 840 113549 1 1 5)
- NULL
- }
- BIT STRING
- 3A 68 5F 6A F8 87 36 4A E2 22 46 5C C8 F5 0E CE
- 1A FA F2 25 E1 51 AB 37 BE D4 10 C8 15 93 39 73
- C8 59 0F F0 39 67 29 C2 60 20 F7 3F FE A0 37 AB
- 80 0B F9 3D 38 D4 48 67 E4 FA FD 4E 12 BF 55 29
- 14 E9 CC CB DD 13 82 E9 C4 4D D3 85 33 C1 35 E5
- 8F 38 01 A7 F7 FD EB CD DE F2 F7 85 86 AE E3 1B
- Deacon & Hurst Standards Track [Page 20]
- RFC 5019 Lightweight OCSP Profile September 2007
- 9C FD 1D 07 E5 28 F2 A0 5E AC BF 9E 0B 34 A1 B4
- 3A A9 0E C5 8A 34 3F 65 D3 10 63 A4 5E 21 71 5A
- }
- }
- }
- }
- }
- }
- }
- }
- Authors' Addresses
- Alex Deacon
- VeriSign, Inc.
- 487 E. Middlefield Road
- Mountain View, CA 94043
- USA
- Phone: 1-650-426-3478
- EMail: alex@verisign.com
- Ryan Hurst
- Microsoft
- One Microsoft Way
- Redmond, WA 98052
- USA
- Phone: 1-425-707-8979
- EMail: rmh@microsoft.com
- Deacon & Hurst Standards Track [Page 21]
- RFC 5019 Lightweight OCSP Profile September 2007
- Full Copyright Statement
- Copyright (C) The IETF Trust (2007).
- This document is subject to the rights, licenses and restrictions
- contained in BCP 78, and except as set forth therein, the authors
- retain all their rights.
- This document and the information contained herein are provided on an
- "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
- OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
- THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
- OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
- THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
- WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- Intellectual Property
- The IETF takes no position regarding the validity or scope of any
- Intellectual Property Rights or other rights that might be claimed to
- pertain to the implementation or use of the technology described in
- this document or the extent to which any license under such rights
- might or might not be available; nor does it represent that it has
- made any independent effort to identify any such rights. Information
- on the procedures with respect to rights in RFC documents can be
- found in BCP 78 and BCP 79.
- Copies of IPR disclosures made to the IETF Secretariat and any
- assurances of licenses to be made available, or the result of an
- attempt made to obtain a general license or permission for the use of
- such proprietary rights by implementers or users of this
- specification can be obtained from the IETF on-line IPR repository at
- http://www.ietf.org/ipr.
- The IETF invites any interested party to bring to its attention any
- copyrights, patents or patent applications, or other proprietary
- rights that may cover technology that may be required to implement
- this standard. Please address the information to the IETF at
- ietf-ipr@ietf.org.
- Deacon & Hurst Standards Track [Page 22]
|