<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div class="">Bonjour,</div>
<div apple-content-edited="true" class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div class=""><br class="">
</div>
</div>
</div>
<div>
<blockquote type="cite" class="">
<div class="">Le 5 févr. 2016 à 19:18, Peter Bowen <<a href="mailto:pzb@amzn.com" class="">pzb@amzn.com</a>> a écrit :</div>
<br class="Apple-interchange-newline">
<div class="">
<div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<blockquote type="cite" class="">
<div class=""><br class="Apple-interchange-newline">
On Feb 4, 2016, at 9:36 AM, Erwann Abalea <<a href="mailto:Erwann.Abalea@docusign.com" class="">Erwann.Abalea@docusign.com</a>> wrote:</div>
<div class="">
<div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div class="">
<blockquote type="cite" class="">
<div class="">Le 4 févr. 2016 à 18:26, Erwann Abalea <<a href="mailto:Erwann.Abalea@docusign.com" class="">Erwann.Abalea@docusign.com</a>> a écrit :</div>
<div class="">
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<div class="">
<blockquote type="cite" class="">
<div class="">Le 2 févr. 2016 à 20:02, Peter Bowen <<a href="mailto:pzb@amzn.com" class="">pzb@amzn.com</a>> a écrit :</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
<div class="">
<blockquote type="cite" class="">
<div class="">
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<div class="">
<blockquote type="cite" class="">
<div class="">
<div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div class="">According to the ssllabs analysis, the chain should fail due to policy constraints, but I’m not sure if anything enforces such constraints.</div>
</div>
</div>
</blockquote>
</div>
<div class=""><br class="">
</div>
<div class="">Correct.</div>
<div class=""><br class="">
</div>
<div class="">From top to bottom, the chain is:</div>
<div class="">
<ul class="">
<li class="">DST ACES CA X6 (trust anchor)</li><li class="">IdenTrust ACES CA 1</li><li class="">Federal Bridge CA 2013</li><li class="">Federal Common Policy CA</li><li class="">SHA-1 Federal Root CA</li><li class="">DoD Interoperability Root CA 1</li><li class="">DoD Root CA 2</li><li class="">DOD CA-28</li><li class="">aflsa.jag.af.mil</li></ul>
</div>
<div class=""><br class="">
</div>
<div class="">Using RFC5280 wording, valid_policy_tree is equal to NULL at « SHA-1 Federal Root CA », and the chain fails at the « DoD Root CA 2 » certificate, because now explicit_policy is equal to 0 (and valid_policy_tree is NULL).</div>
<div class="">Strangely, certificate for « DoD Interoperability Root CA 1 » has a PolicyMappings extension, but policy mapping is forbidden since « SHA-1 Federal Root CA ».</div>
<div class="">Strangely again, the PolicyConstraints extension contained in « DoD Root CA 2 » is not critical. It’s a MUST for RFC5280, and a MAY for X.509 (with a recommendation to set it critical). It’s the extension that requires an explicit policy and makes
 the chain fail.</div>
<div class=""><br class="">
</div>
<div class="">OpenSSL is able to reject such a chain (it doesn’t seem to handle the policy mappings), I’ve been told that MS can correctly reject it, I’m pretty sure that the recent Mozilla PKIX lib accepts it while the previous one rejects it. (And I wouldn’t
 bet a cent on GnuTLS to do such things correctly)</div>
</div>
</div>
</blockquote>
</div>
<br class="">
<div class="">A correction here. Mozilla should be able to reject this chain because of unhandled critical extensions upper in the chain (Federal Bridge CA 2013 and Federal Common Policy CA).</div>
</div>
</div>
</blockquote>
</div>
<br class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
Does ths also apply to the chains discovered here? <a href="https://www.ssllabs.com/ssltest/analyze.html?d=vpn.carillon.ca" class="">https://www.ssllabs.com/ssltest/analyze.html?d=vpn.carillon.ca</a></div>
</div>
</blockquote>
<div><br class="">
</div>
<div>There are 2 valid paths, but due to critical extensions that I think Mozilla doesn’t handle and thus rejects, those chains are possibly not trusted (InhibitAnyPolicy and PolicyConstraints). OpenSSL accepts both with an empty policy set because of unhandled
 policy mappings (4 sets of mappings in each chain). I have no Windows machine to test with, but I think a recent Windows should correctly accept the 2 chains.</div>
<div><br class="">
</div>
<div>The first one is labelled Path #4 on my SSLLabs page:</div>
<div>
<ul class="">
<li class="">DST ACES CA X6</li><li class="">IdenTrust ACES CA 1</li><li class="">Federal Bridge CA 2013</li><li class="">CertiPath Bridge CA - G2</li><li class="">CISRCA1</li><li class="">Carillon PKI Services CA 1</li><li class=""><a href="http://vpn.carillon.ca" class="">vpn.carillon.ca</a></li></ul>
</div>
</div>
The CA constrained policyId set is 1.3.6.1.4.1.25054.3.1.11
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">The second one is labelled Path #7:</div>
<div class="">
<ul class="">
<li class="">VeriSign Universal Root Certification Authority</li><li class="">VeriSign Class 3 SSP Intermediate CA - G2</li><li class="">Federal Bridge CA 2013</li><li class="">CertiPath Bridge CA - G2</li><li class="">CISRCA1</li><li class="">Carillon PKI Services CA 1</li><li class=""><a href="http://vpn.carillon.ca" class="">vpn.carillon.ca</a></li></ul>
</div>
<div>The CA constrained policy set is 1.3.6.1.4.1.25054.3.1.11, 1.3.6.1.4.1.25054.3.1.30</div>
<div><br class="">
</div>
<div>
<div class="">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div class="">Cordialement,</div>
<div class="">Erwann Abalea</div>
<div class=""><br class="">
</div>
</div>
</div>
</div>
</body>
</html>