On 6 Nov 2012, at 14:21, Michael StJohns wrote:

> At 03:52 PM 11/5/2012, Vincent Ryan wrote:
>> On 05/11/2012 18:28, Michael StJohns wrote:
>>> At 09:17 AM 11/5/2012, Vincent Ryan wrote:
>>>> Thanks for your suggestion Mike. I quite like that approach but I'm 
>>>> concerned that existing tools and
>>>> browsers do not support this new type of PKCS12 safe bag.
>>> 
>>> I went back and took a look at the PKCS12 standard.  The ASN1 defining the 
>>> list of bag types ends with an elipsis "..." which indicates extensibility.
>>> 
>>> I just took a look at the code for BouncyCastle - it just prints a "file 
>>> has extra data" and continues.
>>> 
>>> I'm digging into the Openssl code - it appears to do the right thing with 
>>> the ASN1 parsing - still tracking back to the app code.
>>> 
>> 
>> I know these tools can successfully parse arbitrary PKCS12 elements - I have 
>> already done some testing using the PKCS12 Secret Bag to store
>> symmetric keys.
>> 
>> My point is that the parsers will just ignore unrecognized elements.
>> One of the goals of this feature is to migrate from JKS to a format
>> that is more interoperable with commonly used PKI-aware components.
> 
> 
> Yes but... :-)
> 
> A certificate unpaired with a private key will not be imported with existing 
> tools.  (MS certmgr and firefox/thunderbird).  If its paired with a private 
> key, it gets imported into the personal cert portion of the certificate 
> store.  It's possible I'm missing an incantation to do this, but generally 
> you import a trust anchor as a bare certificate - a .x509 or .crt or even a 
> .der file.


Firefox can already import a PKCS12 file containing non-self-signed certs.
They are displayed in the Others and Authorities tabs (as appropriate).



> 
> If you want the trustedCert to be imported on the fly, these programs will 
> need to be updated regardless of the mechanism chosen.  I'd rather you went 
> down the trustAnchorBag approach as I think it matches more closely with the 
> need.
> 

But what about certs that are not trust anchors, such as intermediate CA certs.
The trustAnchorBag would not be suitable for them



> 
> 
> 
> 
>>>> If we could overcome the issue with using extendedKeyUsage as a bag 
>>>> attribute then I think that the
>>>> current proposal using cert bag would be a more interoperable solution.
>>> 
>>> 
>>> I talked to the author of RFC5914 and proposed both your original approach 
>>> and my suggestion.  If anything I think he was more opposed to using 
>>> ExtendedKeyUsage in this approach than I am.
>>> 
>>> If you want to do this, you need to find something that's typed as an 
>>> ATTRIBUTE,  and that's got an unambiguous meaning of "this cert is 
>>> considered to be a trust anchor".   I can't find an OID that means this and 
>>> I've looked.
>>> 
>> 
>> So that leaves defining a new attribute that denotes a cert's level
>> of trust. I guess it could also be used to denote a lack of trust or a 
>> prohibition of trust.
> 
> Yup and that's a new internet draft and rfc and the process of getting an OID 
> assigned - before you complete the coding.  Using the trustAnchorBag approach 
> only really requires an ID after the fact and can be either informational or 
> standards track and will mostly define what a program should do when it sees 
> a trustAnchorBag in a P12 file. 
> 
> Looking at the existing classes and what's gone on since they were originally 
> defined, would it make sense to create a KeyStore.TrustAnchorEntry and then 
> make KeyStore.TrustedCertificateEntry a sub class of that?  That would pair 
> well with the TrustAnchor class and would be closer to what the PKIX folks 
> do.  It also matches a bit better with the PKCS11 trusted public key stuff.

Currently we don't distinguish between intermediate certs and trust anchors: 
they're both stored
in TrustedCertificateEntry.

Do you mean make TrustAnchorEntry extend TrustedCertificateEntry?


> 
> Sorry to push back so hard - but I think this is one of the few places where 
> you really need to get it right the first time as it will be impossible to 
> fix later.

Your comments are valuable. Thanks.


> 
> Mike
> 
> 
> 
> 
> 
> 
> 
> 
> 
>>>> On 4 Nov 2012, at 21:31, Michael StJohns wrote:
>>>> 
>>>>> At 11:14 PM 11/1/2012, Michael StJohns wrote:
>>>>>> The appeal of re-purposing the extendedKeyUsage attribute is that it is 
>>>>>> already well known as a certificate extension. And in addition, it can 
>>>>>> be used by keystore owners to limit a cert's trust level to quite 
>>>>>> specific purposes.
>>>>>> 
>>>>>> This is one of those things where you have to read the fine print.  
>>>>>> AnyKeyUsage means exactly that.  It means the key pair associated with 
>>>>>> this certificate can be used to sign pretty much anything and still be 
>>>>>> within policy. It says nothing about the trust status of the associated 
>>>>>> certificate or the public key within the certificate.
>>>>>> 
>>>>>> What you want is an attribute that says "this certificate is a 
>>>>>> representation of a root of trust" and that attribute type doesn't exist 
>>>>>> AFAIK.
>>>>>> 
>>>>>> I sent a note off to the PKIX mailing list to see if anyone has already 
>>>>>> defined such a beast.  I should have an answer shortly.  If there isn't 
>>>>>> one, you can either assign one from Sun/Oracle/Java's arc (and write a 1 
>>>>>> pager somewhere that describes the format) or better - write an 
>>>>>> Informational ID that defines the format and submit it for publication.
>>>>>> 
>>>>>> Mike
>>>>> 
>>>>> 
>>>>> I haven't heard back from the PKIX group, but take a look at RFC5914 - 
>>>>> section 3 - Trust Anchor List.
>>>>> 
>>>>> Instead of adding an attribute in a CertBag with a type of 
>>>>> ExtendedKeyUsage:AnyKey, instead, use the type and values in this section 
>>>>> to create a TrustAnchorBag - use TrustAnchorList as the format and 
>>>>> id-ct-trustAnchorList as the OID for the bag type.
>>>>> 
>>>>> Doing it this way allows you to avoid overloading the CertBag / 
>>>>> PrivateKey pairing model, and should be an acceptable way of including 
>>>>> trust anchors in a P12 file.
>>>>> 
>>>>> 
>>>>> I'm going to try and grab the author(s) of 5914 and see what they think.
>>>>> 
>>>>> Later, Mike
>>>>> 
>>>>> 
>>> 
> 
> 

Reply via email to