{"id":33,"date":"2012-03-22T09:49:49","date_gmt":"2012-03-22T17:49:49","guid":{"rendered":"http:\/\/rmhrisk.wpengine.com\/?p=33"},"modified":"2012-05-28T22:12:57","modified_gmt":"2012-05-29T06:12:57","slug":"ocsp-responder-performance-needs-improvement","status":"publish","type":"post","link":"https:\/\/unmitigatedrisk.com\/?p=33","title":{"rendered":"OCSP Responder Performance Needs Improvement"},"content":{"rendered":"<p>Recently I set up a PingDom monitor to track the overall performance of the various OCSP responders out there, PingDom is limited to doing GETs and cannot parse the responses from the responders but it\u2019s a fair mechanism to look at response time.<\/p>\n<p>These tests run from a number of different global locations and are averaged together, the locations change but the same locations are used for each set of tests so again this seems fair.<\/p>\n<p>I decided to use the Google logo as my control test, as it is about the same size as a larger OCSP response, after about a month of monitoring this is what I saw:<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\"><strong>Test<\/strong><\/td>\n<td valign=\"top\" width=\"149\"><strong>Avg. Response time<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">Google Logo (3972 bytes)<\/td>\n<td valign=\"top\" width=\"149\">\n<p align=\"right\">44 ms<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">GoDaddy OCSP<\/td>\n<td valign=\"top\" width=\"149\">\n<p align=\"right\">186 ms<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">GlobalSign OCSP<\/td>\n<td valign=\"top\" width=\"149\">\n<p align=\"right\">228 ms<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">Digicert OCSP<\/td>\n<td valign=\"top\" width=\"149\">\n<p align=\"right\">266 ms<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">Comodo OCSP<\/td>\n<td valign=\"top\" width=\"149\">\n<p align=\"right\">268 ms<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">TrustCenter OCSP<\/td>\n<td valign=\"top\" width=\"149\">\n<p align=\"right\">273 ms<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">TrustWave OCSP<\/td>\n<td valign=\"top\" width=\"149\">\n<p align=\"right\">315 ms<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">Startcom OCSP<\/td>\n<td valign=\"top\" width=\"149\">\n<p align=\"right\">364 ms<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">Entrust OCSP<\/td>\n<td valign=\"top\" width=\"149\">\n<p align=\"right\">371 ms<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">Geotrust OCSP<\/td>\n<td valign=\"top\" width=\"149\">\n<p align=\"right\">432 ms<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">VeriSign OCSP<\/td>\n<td valign=\"top\" width=\"149\">\n<p align=\"right\">510 ms<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">CyberTrust OCSP<\/td>\n<td valign=\"top\" width=\"149\">\n<p align=\"right\">604 ms<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">Certum OCSP<\/td>\n<td valign=\"top\" width=\"149\">\n<p align=\"right\">776 ms<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>As you can see the fastest responder is over four times slower than the Google logo, far from acceptable.<\/p>\n<p>When looking at the individual responses and their responses this is what I saw:<\/p>\n<ul>\n<li>Very few responders are using CDNs, AnyCast or other techniques to globally distribute responses.<\/li>\n<li>Only a handful of responders have multiple DNS entries for failover scenarios.<\/li>\n<li>Quite a few responders are not following the HTTP caching header requirements in <a href=\"http:\/\/www.ietf.org\/rfc\/rfc5019.txt\">RFC 5019<\/a>.<\/li>\n<li>Most responders are not sending CA signed responses which reduce the response size significantly (down to 471 bytes),\u00a0in my opinion a OCSP responder should do this for all pre-produced responses.<\/li>\n<li>Some responders are returning Unknown for out of scope responses, this really isn\u2019t safe for unauthenticated requests as it exposes the responder to resource consumption denial of service for against the signing keys.<\/li>\n<li>Response freshness ranges from 6 hours to 14 days, I am quite sure the six hour responses are failing for a very large % of the internet community due to time skew; 4 days\u00a0appear\u00a0to be optimum.<\/li>\n<\/ul>\n<p>These are all fairly easy things to address and I believe it\u2019s reasonable for responders to get down to response times that are consistent with the control test above.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently I set up a PingDom monitor to track the overall performance of the various OCSP responders out there, PingDom is limited to doing GETs and cannot parse the responses from the responders but it\u2019s a fair mechanism to look at response time. These tests run from a number of different global locations and are [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[3,7],"tags":[25,24,19],"class_list":["post-33","post","type-post","status-publish","format-standard","hentry","category-security","category-standards","tag-ocsp","tag-revocation","tag-x509"],"_links":{"self":[{"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=\/wp\/v2\/posts\/33","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=33"}],"version-history":[{"count":0,"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=\/wp\/v2\/posts\/33\/revisions"}],"wp:attachment":[{"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=33"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=33"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=33"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}