====== Nutzung eines SafeNet eToken PRO unter Linux ======
Installation von Paketen unter Debian/GNU Linux 9 (stretch)
# aptitude install opensc-pkcs11 libpkcs11 libengine-pkcs11-openssl \
libengine-pkcs11-openssl1.1 gnupg-pkcs11-scd
Initialisierung des Tokens
$ pkcs11-tool --module /usr/lib/libeToken.so --init-token --label
Using slot 0 with a present token (0x0)
Please enter the new SO PIN:
Please enter the new SO PIN (again):
Token successfully initialized
Setzen der Benutzer-PIN
$ pkcs11-tool -l --init-pin
Using slot 0 with a present token (0x0)
Logging in to "MB".
Please enter SO PIN:
Please enter the new PIN:
Please enter the new PIN again:
User PIN successfully initialized
Erzeugen eines Schlüssels
$ pkcs11-tool --module /usr/lib/libeToken.so \
-l -k --key-type RSA:1024 -d 1 -a ""
Using slot 0 with a present token (0x0)
Logging in to "MB".
Please enter User PIN:
Key pair generated:
Private Key Object; RSA
label:
ID: 01
Usage: decrypt, sign, unwrap
Public Key Object; RSA 1024 bits
label:
ID: 01
Usage: encrypt, verify, wrap
Zertifikatsanfrage erstellen, signieren und in das benötigte DER-Format konvertieren. Als Vorarbeit muss der Pfad zur Bibliothek der zur OpenSSL-Version passenden PKCS#11-Engine gefunden werden.
$ openssl version
OpenSSL 1.1.0f 25 May 2017
$ find /usr/ -iname "*pkcs11.so"
/usr/lib/x86_64-linux-gnu/openssl-1.0.2/engines/libpkcs11.so
/usr/lib/x86_64-linux-gnu/openssl-1.0.2/engines/pkcs11.so
/usr/lib/x86_64-linux-gnu/pkcs11/gnome-keyring-pkcs11.so
/usr/lib/x86_64-linux-gnu/pkcs11/onepin-opensc-pkcs11.so
/usr/lib/x86_64-linux-gnu/pkcs11/opensc-pkcs11.so
/usr/lib/x86_64-linux-gnu/onepin-opensc-pkcs11.so
/usr/lib/x86_64-linux-gnu/opensc-pkcs11.so
/usr/lib/x86_64-linux-gnu/engines-1.1/libpkcs11.so
/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libj2pkcs11.so
/usr/lib/libeTPkcs11.so
$ openssl
OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so \
-pre ID:pkcs11 -pre LIST_ADD: -pre LOAD -pre MODULE_PATH:libeToken.so
OpenSSL> req -engine pkcs11 -new -key 1 -keyform engine -x509 -out .pem -text
OpenSSL> x509 -in .pem -out .der -outform der
Schließlich können wir dieses Zertifikat in den eToken schreiben. Achtung: Korrekte ID (-d) und Label (-a) verwenden.
pkcs11-tool --module /usr/lib/libeToken.so -l -w .der -y cert -d -a ""
Using slot 0 with a present token (0x0)
Logging in to "MB".
Please enter User PIN:
Created certificate:
Certificate Object, type = X.509 cert
label:
ID: 01
===== Links =====
[[https://r3blog.nl/index.php/etoken-pro-72k/]]