[kmf-discuss] Proposed pktool changes
Wyllys Ingersoll
wyllys.ingersoll at sun.com
Thu Jan 10 13:04:54 PST 2008
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 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.
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 )
Thoughts?
-Wyllys
More information about the kmf-discuss
mailing list