====== 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/]]