[kmf-discuss] Proposed pktool changes

Hai-May Chao Hai-May.Chao at sun.com
Thu Jan 10 17:45:38 PST 2008


Wyllys Ingersoll wrote:
> Below are the proposed changes to pktool needed to support Kerberos PKINIT
> and some the SSH certficate changes.
>
> One feature missing from pktool is the ability to add EKU values when 
> creating
> a cert or CSR, I will propose adding a new attr/value pair command line 
> arg to
> support this.
>
> Ex:
>    ekuname=[[critical:]EKU Name,[critical:]EKU Name,...]
>    where EKU Name = serverAuth | clientAuth |
>                     codeSigning | emailProtection |
>                     ipsecEndSystem | ipsecTunnel |
>                     ipsecUser | timeStamping |
>                     OCSPSigning | KPClientAuth | KPKdc
>
>   

The proposed EKU attr command arg looks good.
Should the new SCLogon be added to the above list of EKU names?


> The KMF library, pktoo, and kmfcfg need to support 3 new EKU types
> and 1 new subjectAltName format.
>
> New EKU OIDs (from RFC 4556):
> * KPClientAuth { 1 3 6 1 5 2 3 4 }
> * SCLogon { 1.3.6.1.4.1.311.20.2.2 }
> * KPKdc { 1 3 6 1 5 2 3 5 }
>
> Notes:  When KPClientAuth or KPKdc are used, the digitalSignature KU bit
> MUST also be set.
>
>   

This is good -- it enforces that the purpose of a certificate is 
consistent with
those new EKU bits and KU digitalSignature bit.  It looks like there is 
no other
EKU and KU bits  must be consistent based on RFC 3280.

 
> A new subjectAltName form will be accepted by pktool for creating PKINIT
> user certificates:
>         id-pkinit-san = { 1 3 6 1 5 2 2 }
>
> The form of the name is principal at REALM.  Example:   wyllys at SUN.COM
>
> For use in pktool, the usage would look like:
> $ pktool gencsr ... altname=[critical:]KRB=wyllys at SUN.COM ...
>
> - should pktool will automatically fold the REALM into uppercase form ?
>
> pktool also needs a new command for signing a CSR (as previously discussed).
>
> pktool signcsr
>  signkey=label/filename of signing key (label if keystore=PKCS11 or NSS, filename if file)
>  csr=CSR filename
>  serial=serial number hex string
>  outcert=filename for resulting certificate.
>  [issuer=issuer-DN]             ( DN to use for issuer field.  Not needed if a the key
>                                   has an associated certificate in the keystore.  The subject
>                                   of the associated cert will be the issuer of the new one )
>  [keystore=pkcs11|file|nss]     ( PKCS11 is default )
>  [token=token[:manuf[:serial]]] ( PKCS11 token name, default is to use metaslot )
>  [format=pem|der]               ( format of output cert, PEM is default)
>  [subject=subjectDN]            ( override the subject in the original request )
>  [store=y|n]                    ( store the new cert, default = n )
>  [label=cert label]             ( label to use when storing in PKCS11 or NSS )
>  [altname=subjectAltName]       ( add a SAN )
>  [keyusage=[critical:]usage,..] ( add key usage bits )
>  [eku=EKU Name, EKU Name, ...]  ( add EKU values )
>
>   

Should the eku be in the form like gencert and gencsr commands:

ekuname=[[critical:]EKU Name,[critical:]EKU Name,...]

Otherwise, the signcsr looks good to me.

Hai-May






More information about the kmf-discuss mailing list