1

I want to deploy X.509 certificates onto a Yubikey into the certificate slots

  • 9a: PIV Authentication
  • 9c: Digital Signature
  • 9d: Key Management
  • 9e: Card Authentication

(see Yubico: PIV Introduction - Certificate Slots) according to the PIV Standard.

I plan to let the Yubikey create a CSR, then issue a certificate with OpenSSL and import the final certificate onto the Yubikey. Moreover, the certificate in slot 9d shall be compatible with MS Windows Bitlocker Drive Encryption.

I am wondering which key usages and extended key usages each of those certificates needs for maximum interoperability with real-world applications. For example, after some investigation I found out that MS Bitlocker only accepts certificates with key usage "key encipherment" and the proprietary extended key usage 1.3.6.1.4.1.311.67.1.1 (ekuDriveEncryption). I want to avoid a situation that I issue certificates now, unaware of some technical restrictions only to find out in the nearby future that the certificate is unusable for the intended purpose due to some missing extension.

My question is: What are the "typical" (or "correct") key usages and extended key usages of certificates for each of the PIV slots 9a, 9c, 9d and 9e as expected by current, real-world applications?

Here are the relevant snippets from my OpenSSL configuration which I plan to use. Note, the chosen key usage are educated guesses based on some Internet research, but I haven't found a normative reference yet.

[ additional_oids ]

# See
# 
#  - https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-7/dd875548(v=ws.10)?redirectedfrom=MSDN
#  - https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-7/dd875530(v=ws.10)?redirectedfrom=MSDN
ekuDriveEncryption = 1.3.6.1.4.1.311.67.1.1

#
# Extensions for self-issued root CA certificate.
# 
[ root_ca_ext ]
basicConstraints       = critical, CA:TRUE, pathlen:0
keyUsage               = critical,keyCertSign,cRLSign


#
# Extensions for personal authentication (PIV) certificates (slot 9a).
# 
# Typical use cases:
#
#  - System Login
#
[ 9a_cert_ext ]
basicConstraints       = critical, CA:FALSE
keyUsage               = critical,digitalSignature,nonRepudiation
extendedKeyUsage       = 


#
# Extensions for personal signing certificates (slot 9c).
# 
# Typical use cases:
#
#  - Document Signing
#  - File Signing
#  - Executable Signing
#
[ 9c_cert_ext ]
basicConstraints       = critical, CA:FALSE
keyUsage               = critical,digitalSignature,nonRepudiation
extendedKeyUsage       = codeSigning,emailProtection,serverAuth,clientAuth


#
# Extensions for key management (aka encryption) certificates (slot 9d).
# 
# Typical use cases:
#
#  - File Encryption
#  - Email Encryption
#  - Disk Encryption
#
[ 9d_cert_ext ]
basicConstraints       = critical, CA:FALSE
keyUsage               = critical,keyEncipherment,dataEncipherment
extendedKeyUsage       = emailProtection,serverAuth,clientAuth,ekuDriveEncryption

#
# Extensions for card authentication certificates (slot 9e).
# 
# Typical use cases:
#
#  - Physical Access, e.g. door locks
#
[ 9e_cert_ext ]
basicConstraints       = critical, CA:FALSE
keyUsage               = critical,digitalSignature,nonRepudiation
extendedKeyUsage       = serverAuth,clientAuth

0

You must log in to answer this question.

Browse other questions tagged .