{"id":12587,"date":"2020-07-28T11:00:46","date_gmt":"2020-07-28T15:00:46","guid":{"rendered":"https:\/\/www.thesslstore.com\/blog\/?p=12587"},"modified":"2021-03-11T12:18:37","modified_gmt":"2021-03-11T17:18:37","slug":"ocsp-ocsp-stapling-ocsp-must-staple","status":"publish","type":"post","link":"https:\/\/www.thesslstore.com\/blog\/ocsp-ocsp-stapling-ocsp-must-staple\/","title":{"rendered":"Everything You Need to Know About OCSP, OCSP Stapling &#038; OCSP Must-Staple"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"h-what-happens-when-a-hacker-gets-an-ssl-certificate-s-private-key-the-ca-revokes-it-but-how-does-the-browser-know-whether-a-website-s-certificate-has-been-revoked-ocsp-is-one-way-your-web-client-can-check\">What happens when a hacker gets an SSL certificate\u2019s private key? The CA revokes it. But how does the browser know whether a website\u2019s certificate has been revoked? OCSP is one way your web client can check\u2026<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before an end user\u2019s browser connects to a website via HTTPS, it needs to know that the site is using a valid SSL\/TLS certificate. But how can their client or your web server verify whether a server\u2019s SSL\/TLS certificate is valid and hasn\u2019t been revoked for one reason or another? There are two main types of certificate revocation status checks that are used by certificate authorities (CAs) \u2014 certificate revocation lists (CRLs) and the online certificate status protocol, or OCSP. Of course, there are various enhancements to both of these revocation status check mechanisms. Unfortunately, we can\u2019t cover all of them, so we\u2019ll just touch on a select few in this article.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But what exactly is OCSP? How does it differ from certificate revocation lists (CRLs), OCSP stapling, and OCSP must-staple? What role does the OCSP protocol play in verifying a certificate\u2019s revocation status? And where do we go from here to improve the revocation checking process?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s hash it out.<span id=\"newline\"><\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-is-the-online-certificate-status-protocol\">What Is the Online Certificate Status Protocol?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The online certificate status protocol is an internet protocol that\u2019s described in the <a href=\"https:\/\/tools.ietf.org\/html\/rfc6960\" target=\"_blank\" rel=\"noreferrer noopener\">Internet Engineering Task Force\u2019s (IETF) RFC 6960<\/a>. It\u2019s one method that web clients (browsers) use to determine the revocation status of a web server\u2019s X.509 digital certificate when attempting to connect to a website. So, basically, the <strong>OCSP protocol is a real-time check of a website certificate\u2019s revocation status.<\/strong> It\u2019s an alternative to using CRLs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-s-the-role-of-an-ocsp-responder\">What\u2019s the Role of an OCSP Responder?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To put it simply: <strong>OCSP responder = OCSP server<\/strong>. People frequently use the terms \u201cOCSP servers\u201d and \u201cOCSP responders\u201d interchangeably because of their functions. An OCSP server belongs to the CA who issued the digital certificate. It uses the certificate\u2019s serial number, which the client provides in its OCSP request, to look up its revocation status and \u201crespond\u201d with the status. (Hence its other name \u201cOCSP responder.\u201d)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Commercial digital certificates, which includes SSL\/TLS <a href=\"https:\/\/www.thesslstore.com\/blog\/what-is-a-website-security-certificate-and-what-does-it-do-for-your-business\/\">website security certificates<\/a>, are issued by trusted third parties known as certificate authorities to identify and authenticate individuals, organizations, or other entities. So, <a href=\"https:\/\/www.thesslstore.com\/blog\/mass-revocation-millions-of-certificates-revoked-by-apple-google-godaddy\/\">when a CA revokes a certificate<\/a>, it means that they\u2019re saying that the certificate is no longer valid for one reason or another and that it can\u2019t be trusted. However, the CA needs a way to communicate that certificate invalidation info to users\u2019 clients and to web servers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is where certificate revocation lists (CRLS) and the open certificate status protocol come into play.<\/p>\n\n\n<span style=\"display:none\" class=\"tl-placeholder-f-type-shortcode_12653\"><\/span>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-where-the-ocsp-protocol-fits-into-the-website-security-and-authentication-process\">Where the OCSP Protocol Fits Into the Website Security and Authentication Process<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Certificates Gone Bad! Certificate Revocation Techniques Explained (CRL, OCSP, OCSP Stapling)\" width=\"960\" height=\"540\" src=\"https:\/\/www.youtube.com\/embed\/g08Omc1wi0s?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Basically, OCSP is one of the ways to check the revocation status of an SSL\/TLS certificate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When your browser tries to connect to a website\u2019s server, it engages in a process that\u2019s known as an <a href=\"https:\/\/www.thesslstore.com\/blog\/explaining-ssl-handshake\/\">SSL\/TLS handshake<\/a>. Most websites still rely on the TLS 1.2 handshake, but the TLS 1.3-supporting platforms are starting to increase little by little.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As part of the TLS handshake process, there are back-and-forth communications (roundtrips) that take place between the client and the web server. TLS 1.2, the older version of the protocol, has two roundtrips whereas TLS 1.3 only has one. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"897\" height=\"1024\" src=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2017\/01\/SSL_Handshake_10-Steps-1-897x1024.png\" alt=\"TLS 1.2 Handshake\" class=\"wp-image-3366 addshadow\" srcset=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2017\/01\/SSL_Handshake_10-Steps-1-897x1024.png 897w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2017\/01\/SSL_Handshake_10-Steps-1-263x300.png 263w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2017\/01\/SSL_Handshake_10-Steps-1-768x876.png 768w\" sizes=\"auto, (max-width: 897px) 100vw, 897px\" \/><figcaption>An illustration of the TLS 1.2 handshake and its two roundtrips.<\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"374\" src=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2018\/03\/TLS_1_3_Handshake.jpg\" alt=\"TLS 1.3 Handshake\" class=\"wp-image-6088 addshadow\" srcset=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2018\/03\/TLS_1_3_Handshake.jpg 1000w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2018\/03\/TLS_1_3_Handshake-300x112.jpg 300w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2018\/03\/TLS_1_3_Handshake-768x287.jpg 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption>An illustration of the TLS 1.3 handshake and its single roundtrip.<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The purpose of these handshakes is to authenticate the server and to establish a secure, encrypted connection between the two parties. Part of this process involves the web server passing along its SSL\/TLS certificate to the end user\u2019s web browser.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"702\" height=\"239\" src=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/Firefox-OCSP.png\" alt=\"An OCSP screenshot from Firefox of the online certificate status protocol optional settings\" class=\"wp-image-12588 addshadow\" srcset=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/Firefox-OCSP.png 702w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/Firefox-OCSP-300x102.png 300w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/Firefox-OCSP-698x239.png 698w\" sizes=\"auto, (max-width: 702px) 100vw, 702px\" \/><figcaption>A screenshot of the optional online certificate status protocol (OCSP) settings in Firefox.<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">But how do you know whether the certificate that it\u2019s passing along is valid or has been revoked? That\u2019s where certificate revocation checks (such as OCSP) come into play. But not all browsers use online certificate status protocol by default \u2014 or they use their own versions of certificate revocation checking mechanisms that curate CRL lists from CAs. For example, <a href=\"https:\/\/www.thesslstore.com\/blog\/firefox-disable-ocsp-checking\/\">Mozilla Firefox and Google Chrome disabled OCSP checking<\/a> by default (although Firefox still includes it as an option in its settings (see the screenshot above). We\u2019ll speak more to that shortly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now that we know what leads to the certificate revocation check, let\u2019s roll up our sleeves and dive right into the nitty-gritty of how OCSP works.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-how-your-client-checks-a-certificate-s-revocation-status-using-ocsp\">How Your Client Checks a Certificate\u2019s Revocation Status Using OCSP<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"852\" height=\"569\" src=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/certificate-revocation-ocsp.png\" alt=\"An illustration of how an OCSP certificate revocation status check works\" class=\"wp-image-12568 addshadow\" srcset=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/certificate-revocation-ocsp.png 852w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/certificate-revocation-ocsp-300x200.png 300w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/certificate-revocation-ocsp-768x513.png 768w\" sizes=\"auto, (max-width: 852px) 100vw, 852px\" \/><figcaption>Here\u2019s an illustration that breaks down how the OCSP certificate revocation status check works.<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s break down of the certificate revocation status check works using the online certificate status protocol to provide more clarity:<\/p>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\"><li><strong>A website\u2019s server sends its SSL\/TLS digital certificate to the client. <\/strong>This information contains information about the individual or organization that\u2019s signed off by a trusted third-party CA.<\/li><li><strong>The client sends an OCSP request to a CA for verification of the certificate\u2019s status.<\/strong> This request info includes the certificate\u2019s serial number.<\/li><li><strong>The OCSP responder uses this number to check the status of the certificate.<\/strong> It then responds to the client with one of three answers:<ul><li>Good,<\/li><li>Revoked, or<\/li><li>Unknown.<\/li><\/ul><\/li><li><strong>Once the client receives the answer, it can either allow or reject the session.<\/strong> An issue, though, comes into play when browsers have \u201csoft fail\u201d policies (more on that shortly).<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-online-certificate-status-protocol-is-just-one-way-to-check-a-cert-s-revocation-status\">The Online Certificate Status Protocol Is Just One Way to Check a Cert\u2019s Revocation Status<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Okay, let\u2019s back up for a moment. There are two main ways to check the revocation status of a digital certificate \u2014 CRLs and OCSP. But there are also enhancements or alternatives to those two methods:<\/p>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\"><li>Centralized CRL data like CRLSets and CRLite (previously OneCRL),<\/li><li>OCSP stapling, and<\/li><li>OCSP must staple.<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">So, what\u2019s the difference between these different mechanisms or enhancements? CRLs and OCSP first two place the responsibility for the certificate revocation status check on the client, whereas OCSP stapling (and OCSP must-staple) places the responsibility on the website\u2019 web server.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s briefly cover each of these processes to better understand how they relate and differ.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-1-traditional-certificate-revocation-lists-and-alternatives-like-crlsets-and-crlite\">1. Traditional Certificate Revocation Lists (and Alternatives like CRLSets and CRLite)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Checking the certificate revocation status of a certificate using a traditional CA certificate revocation list involves the web client reaching out to the CA and downloading a copy of their CRL. This is a resource-intensive process that slows down the user\u2019s web client and makes for a kind of crappy user experience.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We don\u2019t want to rehash all of the specifics of CRLs in this article. (It would take way too much time and that\u2019s not why you\u2019re here anyhow.) So, here\u2019s a quick overview of how a CRL-based cert revocation check works:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"894\" height=\"588\" src=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/how-to-check-certificate-revocation-status-crl.png\" alt=\"An illustration of how a CRL certificate revocation status check works\" class=\"wp-image-12567 addshadow\" srcset=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/how-to-check-certificate-revocation-status-crl.png 894w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/how-to-check-certificate-revocation-status-crl-300x197.png 300w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/how-to-check-certificate-revocation-status-crl-768x505.png 768w\" sizes=\"auto, (max-width: 894px) 100vw, 894px\" \/><figcaption>Here\u2019s a visual of how the CRL-based certificate revocation status check works.<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">For a deep-dive on what <a href=\"https:\/\/www.thesslstore.com\/blog\/crl-explained-what-is-a-certificate-revocation-list\/\">CA certificate revocation lists<\/a> are and how they work, check out our other article.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-crlsets-and-crlite\">CRLSets and CRLite<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">We did mention earlier, though, that some browsers have created their own curated CRL data sets from CA CRLs. For example, Google created their own mechanism (<a href=\"https:\/\/dev.chromium.org\/Home\/chromium-security\/crlsets\" target=\"_blank\" rel=\"noreferrer noopener\">CRLSets<\/a>) for non-EV SSL\/TLS certificates. According to an <a href=\"https:\/\/www.zdnet.com\/article\/chrome-does-certificate-revocation-better\/\" target=\"_blank\" rel=\"noreferrer noopener\">article from ZDNet<\/a>:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><em>\u201cGoogle decided in 2012&nbsp;<\/em><a rel=\"noreferrer noopener\" href=\"https:\/\/www.imperialviolet.org\/2012\/02\/05\/crlsets.html\" target=\"_blank\"><em>to default Chrome not to check for certificate revocation on non-EV certificates<\/em><\/a><em>. [\u2026] Instead, Google uses their Chrome update mechanism to send batches of serial numbers of revoked certificates which it constantly gathers by crawling Certificate Authorities.\u201d<\/em><\/p><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Firefox also <a href=\"https:\/\/blog.mozilla.org\/security\/2015\/03\/03\/revoking-intermediate-certificates-introducing-onecrl\/\" target=\"_blank\" rel=\"noreferrer noopener\">launched OneCRL in 2015<\/a> (their version of The Chromium Project\u2019s CRLSets for Google) but now relies on <a href=\"https:\/\/blog.mozilla.org\/security\/2020\/01\/09\/crlite-part-1-all-web-pki-revocations-compressed\/\" target=\"_blank\" rel=\"noreferrer noopener\">CRLite as of December 2019<\/a>. However, it\u2019s also interesting to note that <a href=\"https:\/\/wiki.mozilla.org\/CA\/Revocation_Checking_in_Firefox\" target=\"_blank\" rel=\"noreferrer noopener\">Firefox doesn\u2019t automatically check the revocation status of certificates of short-lived certificates<\/a> (those that have a validity period of fewer than 10 days).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-online-certificate-status-protocol\">2. Online Certificate Status Protocol &nbsp;<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Okay, so we\u2019ve already touched on the online certificate status protocol. Again, this process of verifying a certificate\u2019s revocation status overcomes the main issues of CRLs and provides a real-time update. Instead of having to perform massive searches of the entire CRL for every request, the client can check the status of a single cert by using its serial number.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, OCSP isn\u2019t perfect (though, really, what technology or protocol is?). It still requires the client reaching out to a CA about the certificate status. As such, this process:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Keeps the client responsible for checking the revocation status of a cert,<\/li><li>Involves an inordinate number of requests to the OCSP responder (in this case, the CA),<\/li><li>Requests can time out or fail, leading to those soft failures we mentioned earlier, and<\/li><li>CAs still receive information about the users\u2019 browsing histories, IP addresses, and other information that they\u2019d likely prefer to keep private.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">An issue with the OCSP responses that the servers provide is that browsers are programmed to respond in different ways. So, even if a browser receives a response saying that the status of the certificate is unknown, rather than terminating the session (what\u2019s known as a hard fail), it may accept the certificate anyhow and enable the connection (aka a soft fail).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As far as I\u2019m concerned, a soft fail policy somewhat defeats the purpose of checking the CRL in the first place. If a browser is going to allow a connection anyhow, why bother with the certificate check in the first place?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But enough about soft- and hard-fail policies \u2014 let\u2019s talk about the third method of checking a certificate\u2019s revocation status.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-3-ocsp-stapling\">3. OCSP Stapling<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Much like the previous status-checking method, <a href=\"https:\/\/www.thesslstore.com\/blog\/ocsp-stapling-best-method-checking-certificate-validity\/\">OCSP stapling<\/a> is a process that uses the online certificate status protocol. However, it\u2019s a more advanced way of doing so. Instead of relying on the client to perform certificate revocation status checks, it places that responsibility on the web server instead.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-how-ocsp-stapling-works\">How OCSP Stapling Works<\/h4>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\"><li><strong>The web server sends regular, automatic OCSP requests to the OCSP responder (CA).<\/strong> This \u201cnudge,\u201d if you will, by the server happens as frequently as every few hours (depending on its settings).<\/li><li><strong>The OCSP responder provides time-stamped data.<\/strong> In response to the request, the OCSP responder sends a timestamped and CA-signed approval message back to the web server.<\/li><li><strong>The web server caches this timestamped response.<\/strong> It uses this cached record for reference until it receives a new update from the OCSP server.<\/li><li><strong>The web server sends the cached, CA-signed and timestamped data to the client.<\/strong> Whenever a client attempts to connect to a web server, the server can \u201cstaple\u201d the timestamped OCSP response when it sends the SSL\/TLS certificate to the client during the SSL\/TLS handshake. The client trusts this response because it\u2019s digitally signed and timestamped.<\/li><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-just-say-no-to-client-based-revocation-checks-why-ocsp-stapling-is-the-better-option\">Just Say No to Client-Based Revocation Checks: Why OCSP Stapling Is the Better Option<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">With OCSP stapling, the web server frequently communicates with the OCSP responder to stay up to date with the most current certificate revocation status information. It keeps a timestamped record (cache) of the OCSP server\u2019s responses on hand that it can pull from in the event that the responder becomes unavailable. This reduces the load on the client and proves a better user experience. It also helps them feel more confident that your site is legitimate and is run by your brand.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While you could use a certificate revocation list, as you now know, that process has its limitations. For one, those lists don\u2019t always download frequently to the client \u2014 and they\u2019re sometimes massive. Second, using CRLs puts the responsibility on your end users\u2019 clients instead of your web server. And that just makes for a bad user experience all the way around.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Overall, OCSP stapling is great and is certainly a vast improvement over CRLs. But what if the client doesn\u2019t know if the server in question supports OCSP? This is an issue that continues to plague OCSP stapling.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-enter-ocsp-must-staple\">Enter OCSP Must-Staple<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">See, OCSP must-staple shippers? We haven\u2019t forgotten you.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you\u2019ve heard about OCSP stapling, then it\u2019s likely that you\u2019ve also heard of \u201cOCSP must-staple\u201d (or OCSP must staple). But if not, this term let me take a sec to explain. This term refers to a certificate extension that gives the client a heads up that it should expect to receive an OCSP staple whenever it receives an SSL\/TLS certificate. The goal is to shore up the certificate revocation process.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Asia Pacific Network Information Centre (APNIC) published a great article on <a href=\"https:\/\/blog.apnic.net\/2019\/01\/15\/is-the-web-ready-for-ocsp-must-staple\/\" target=\"_blank\" rel=\"noreferrer noopener\">OCSP Must-Staple<\/a> at the end of 2019. In it, they provide data about how many of the leading web clients actually support OCSP stapling and OCSP must-staple:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"974\" height=\"120\" src=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/apnic-ocsp-must-staple.png\" alt=\"Screenshot of data from APNIC regarding OCSP responses, OCSP stapling, and OCSP must-staple\" class=\"wp-image-12589 addshadow\" srcset=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/apnic-ocsp-must-staple.png 974w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/apnic-ocsp-must-staple-300x37.png 300w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/apnic-ocsp-must-staple-768x95.png 768w\" sizes=\"auto, (max-width: 974px) 100vw, 974px\" \/><figcaption>Image source: <a href=\"https:\/\/blog.apnic.net\/2019\/01\/15\/is-the-web-ready-for-ocsp-must-staple\/\" target=\"_blank\" rel=\"noreferrer noopener\">APNIC<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-the-advantages-and-drawbacks-of-ocsp-must-staple\">The Advantages (and Drawbacks) of OCSP Must-Staple<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">While OCSP must-staple is great in that it helps overcome some of the shortcomings of OCSP, frankly, it\u2019s a bit testy. For it to work, all parties (the CA, client and the website\u2019s server) must be available and performing well. Another issue is that not all major websites support the certificate extension just yet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">According to the APNIC article:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><em>We first observed that all browsers do solicit stapled OCSP responses, indicating that they do support OCSP Stapling. However, we observed that only Firefox (on all desktops OSes and on Android) displays a certificate error to the user if a stapled OCSP response is not included with a certificate that includes the OCSP Must-Staple extension; all other browsers (including Firefox on iOS) simply accept the certificate and do not even send their own OCSP request to the OCSP responder.<\/em><\/p><p><em>These results indicate that clients are largely not yet ready for OCSP Must-Staple. However, it does appear that all clients already support OCSP Stapling, meaning the additional coding work necessary to support OCSP Must-Staple is likely not too significant.\u201d<\/em><\/p><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">All of this is to say that while OCSP must-staple is a great ideal, it\u2019s not perfect or a sure thing quite yet. There\u2019s still more work to be done, and it\u2019s definitely something to strive toward. We\u2019d love to see more sites implementing it in the future \u2014 and, preferably, sooner rather than later.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our friends at Venafi have a great article on <a href=\"https:\/\/www.venafi.com\/blog\/ocsp-must-staple\" target=\"_blank\" rel=\"noreferrer noopener\">how to implement OCSP Must-Staple<\/a> if you\u2019d like to learn more and want to implement it on your site.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-final-thoughts-on-ocsp-ocsp-stapling-ocsp-must-staple-for-cert-revocation-checks\">Final Thoughts on OCSP, OCSP Stapling &amp; OCSP Must-Staple for Cert Revocation Checks<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We hope that this article has been informative and provides clarity about:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>What the online certificate status protocol and OCSP stapling are and how they work,<\/li><li>The roles they play in website security,<\/li><li>How and why OCSP stapling provides your end users with a better (and more secure) experience, and<\/li><li>Where we still have room to improve as an industry in terms of adopting OCSP must-staple.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">As an organization, we know that you want to provide the best (and most secure) experience possible to your site visitors and customers. And rather than \u201cpassing the buck\u201d by making your end users\u2019 browsers responsible for checking your site\u2019s revocation status, we hope you\u2019ll take the initiative by providing that information up front by implementing OCSP stapling (or, moreover, OCSP must-staple).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OCSP stapling is a great way to streamline the authentication process of the SSL\/TLS handshake. This reduces the load and gets users on your site more quickly. But it\u2019s not perfect. That\u2019s why we hope to see more people taking their certificate revocation checking methods to the next level with OCSP must-staple.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What happens when a hacker gets an SSL certificate\u2019s private key? The CA revokes it. But how does the browser know whether a website\u2019s certificate has been revoked? OCSP is one way your web client can check\u2026<\/p>\n","protected":false},"author":17,"featured_media":12592,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":"","tve_updated_post":"","tve_custom_css":"","tve_user_custom_css":"","tve_globals":{},"tcb2_ready":0,"tcb_editor_enabled":0,"tve_landing_page":"","_tve_header":"","_tve_footer":""},"categories":[16,10200],"tags":[239,12541,162],"class_list":["post-12587","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hashing-out-cyber-security","category-monthly-digest","tag-ocsp","tag-ocsp-must-staple","tag-ocsp-stapling","post-with-tags"],"views":51009,"jetpack_featured_media_url":"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2020\/07\/server-communication.jpg","_links":{"self":[{"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/posts\/12587","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/comments?post=12587"}],"version-history":[{"count":0,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/posts\/12587\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/media\/12592"}],"wp:attachment":[{"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/media?parent=12587"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/categories?post=12587"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/tags?post=12587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}