Persoonscertificaat op een Yubikey
LET OP! Tot op heden hebben we GEEN goede ervaringen met het opslaan van je persoonscertificaat op een Yubikey. In sommige gevallen werkt het altijd, andere gevallen werkt het soms, en weer andere gevallen werkt het helemaal niet. Daarom raden we deze oplossing ten zeerste af. Als je ervaring hebt opgedaan hoe dit op een stabiele manier te gebruiken, dan horen we dat uiteraard graag!
Indien je zowel je wachtwoord voor SCM als het persoonscertificaat in de browser opslaat is er feitelijk geen sprake van een tweede factor. We raden daarom ten sterkste aan om óf een losse wachtwoordmanager te gebruiken óf een persoonscertificaat op een HSM/YubiKey te gebruiken.
Yubikeys (zoals de NEO en de 4/5 series) kunnen gebruikt worden voor het veilig opslaan van persoonscertificaten een bijbehorende sleutels op basis van de PIV applet op die keys, via de USB CCID (smartcard) interface.
Het activeren van de CCID interface en het genereren van certificaten kan met door Yubico geleverde tools:
De versies in linux distributies zijn vaak niet de meest recente. Voor Ubuntu is een Personal Package Archive beschikbaar met de laatste versies.
Je kunt een bestaand certificaat met bijbehorende private sleutel importeren vanaf een PKCS#12 bestand, maar voor 2-factor-authenticatie is het beter de sleutels te genereren op de yubikey zelf.
Yubikey prepareren
Voordat je de Yubikey kunt gebruiken zul je deze moeten personaliseren door de PIN en de management key aan te passen.
- De default PIN code is 123456. De default PUK code is 12345678.
- De default management key is 010203040506070801020304050607080102030405060708.
NB: PIN hoeft niet numeriek te zijn!
Gebruik hiervoor de GUI (Yubikey Manager) of de command line tool (ykman).
# check if the PIV applet is enabled
$ ykman info
Device type: YubiKey 5C
Serial number: 10174716
Firmware version: 5.1.2
Form factor: Keychain (USB-C)
Enabled USB interfaces: OTP+FIDO+CCID
Applications
OTP Enabled
FIDO U2F Enabled
OpenPGP Enabled
PIV Enabled
OATH Enabled
FIDO2 Enabled
# if not, enable PIV
$ ykman config usb --enable PIV
Enable PIV.
Configure USB interface? [y/N]: y
# change the PIN
$ ykman piv change-pin
Enter your current PIN: 123456
Enter your new PIN: ******
Repeat for confirmation: ******
New PIN set.
# change management key (3DES, i.e. 24 byte hex string)
$ ykman piv change-management-key
Enter your current management key [blank to use default key]: 010203040506070801020304050607080102030405060708
Enter your new management key: ************************************************
Repeat for confirmation: ************************************************
Zie ook:
Certificaat installeren
Het installeren van het certificaat bestaat uit de volgende stappen:
- genereer sleutels op het token
- genereer een CSR op het token voor de gegenereerde sleutels
- vraag een certificaat aan op basis van de CSR
- importeer het certificaat op het token
Gebruik hiervoor de GUI (Yubikey Manager) of de command line tool (ykman).
PIV kent een aantal verschillende slots om certificaten en keys in op te slaan. Gebruik voor authenticatie slot 9a. Dit slot is bedoeld voor authenticatie (waarbij de PIN eenmalig bij inloggen wordt gevraagd).
# generate RSA key pair on device, store public key in file public_key.pem
$ ykman piv generate-key 9a public_key.pem
Enter a management key [blank to use default key]: ************************************************
# generate CSR containing public key
$ ykman piv generate-csr -s dummy 9a public_key.pem csr.pem
Enter PIN: ******
# have your CA issue the cert, store in the file cert.pem, then import this certificate
$ ykman piv import-certificate 9a cert.pem
Enter a management key [blank to use default key]: ************************************************
# check the result
$ ykman piv info
PIV version: 5.1.2
PIN tries remaining: 3
CHUID: 544f5e9e7c861eeb9a3fb33b11947030c389d11ba722ba2b6a170db6d3b4abc822c35dd98d3880c4118013f766b0f75058d5058514cc96c7886079
CCC: No data available.
Slot 9a:
Algorithm: RSA2048
Subject DN: O=Example Org,C=NL,CN=John Doe,1.2.840.113549.1.9.1=jd@example.edu
Issuer DN: C=NL,O=GEANT Vereniging,CN=GEANT Personal CA 4
Serial: 27835300298793449651833267015920948735
Fingerprint: 7929996d570ea256eca021e894293cd89d8853594323669bc120e135ed99ec18
Not before: 2020-04-16 00:00:00
Not after: 2021-04-16 23:59:59
Certificaat op je Yubikey gebruiken in je browser
De slots op je Yubikey met daarin opgeslagen sleutels en certificaten kunnen worden gebruikt vanuit je browser via PKCS#11, een standaard API voor het gebruik van cryptografische hardware.
Yubico levert hiervoor de driver YKCS11, die de PKCS#11 functies vertaalt naar PIV APDUs. Deze driver heet libykcs11
en wordt geïnstalleerd met samen met yubico-piv-tool.
Firefox
In Firefox is het mogelijk een PKCS#11 module te laden. via Preferences | Privacy & Security | Security Devices...
Zie hiervoor de documentatie van Yubico Adding YKCS11 Security Device.
Overige tokens of browsers
Vraag certificaten-beheer@surf.nl.