Nitrokey 2 Pro unter MacOS

Hallo zusammen,

ich habe den Nitrokey Pro 2 vor ein paar Tagen bekommen und habe es bisher geschafft OTP in Betrieb zu nehmen, aber an S/MIME mit Outlook scheitere ich.

Mit dem ersten USB-C auf USB-A Adapter schien es noch mehr Probleme zu machen. Nun am Monitor scheint er weniger Fehler zu machen. Aber Outlook weigert sich noch immer.

pkcs15-init --delete-objects privkey,pubkey --id 2 --store-private-key test1.pfx --format pkcs12 --auth-id 3 --verify-pin
Using reader with a card: Nitrokey Nitrokey Pro
User PIN required.
Please enter User PIN [Admin PIN]: 
Deleted 2 objects
error:23076071:PKCS12 routines:PKCS12_parse:mac verify failure
Please enter passphrase to unlock secret key: 
Importing 4 certificates:
  0: /emailAddress=<removed>
  1: /C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Client Authentication and Secure Email CA
  2: /C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority
  3: /C=GB/ST=Greater Manchester/L=Salford/O=Comodo CA Limited/CN=AAA Certificate Services
Failed to store private key: Not supported

pkcs15-init --delete-objects privkey,pubkey --id 3 --store-private-key test1.pfx --format pkcs12 --auth-id 3 --verify-pin
Using reader with a card: Nitrokey Nitrokey Pro
User PIN required.
Please enter User PIN [Admin PIN]: 
Deleted 2 objects
error:23076071:PKCS12 routines:PKCS12_parse:mac verify failure
Please enter passphrase to unlock secret key: 
Importing 4 certificates:
  0: /emailAddress=<removed>
  1: /C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Client Authentication and Secure Email CA
  2: /C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority
  3: /C=GB/ST=Greater Manchester/L=Salford/O=Comodo CA Limited/CN=AAA Certificate Services
Failed to store private key: Non unique object ID
pkcs15-init(1989,0x105150580) malloc: *** error for object 0x6000036e0300: pointer being freed was not allocated
pkcs15-init(1989,0x105150580) malloc: *** set a breakpoint in malloc_error_break to debug
zsh: abort      pkcs15-init --delete-objects privkey,pubkey --id 3 --store-private-key     3 

Wenn man sich versucht die Zertifikate anzeigen zu lassen mit

pkcs15-tool --list-certificates
Using reader with a card: Nitrokey Nitrokey Pro

scheint es auch leer zu sein.

Mir ist etwas unklar woran es liegen könnte. Hat jemand einen Tipp?

Update etwas später. Bei mehreren versuchen scheint es auch ab und zu mal zu gehen:

pkcs15-init --delete-objects privkey,pubkey --id 3 --store-private-key test1.pfx --format pkcs12 --auth-id 3 --verify-pin
Using reader with a card: Nitrokey Nitrokey Pro
User PIN required.
Please enter User PIN [Admin PIN]: 
NOTE: couldn't find privkey 03 to delete
NOTE: couldn't find pubkey 03 to delete
Deleted 0 objects
error:23076071:PKCS12 routines:PKCS12_parse:mac verify failure
Please enter passphrase to unlock secret key: 
Importing 4 certificates:
  0: /emailAddress=<removed>
  1: /C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Client Authentication and Secure Email CA
  2: /C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority
  3: /C=GB/ST=Greater Manchester/L=Salford/O=Comodo CA Limited/CN=AAA Certificate Services
Failed to store private key: Not supported

pkcs15-tool --list-certificates
Using reader with a card: Nitrokey Nitrokey Pro
X.509 Certificate [Cardholder certificate]
	Object Flags   : [0x00]
	Authority      : no
	Path           : 3f007f21
	ID             : 03
	Encoded serial : 02 10 61526C8AB1822A8C2947C1447C83551C

Das Zertifikat mit der ID 02 ist aber nie in der Auflistung und Outlook meldet “Stellen Sie sicher, dass Sie über gültige Zertifikate zum Senden von Nachrichten mit S/MIME verfügen.”

Beste Grüße
Marco

Hey @Marco,

ja das sieht recht ungewöhnlich aus, aber ins Auge stechen Fehler wie:

error:23076071:PKCS12 routines:PKCS12_parse:mac verify failure

und

Failed to store private key: Non unique object ID
pkcs15-init(1989,0x105150580) malloc: *** error for object 0x6000036e0300: pointer being freed was not allocated
pkcs15-init(1989,0x105150580) malloc: *** set a breakpoint in malloc_error_break to debug

Wenn die nicht deterministisch sind ist da seeeehr komisch, aber ich würde empfehlen erstmal sicherzustellen, dass der pkcs#12 container nicht irgendwie kaputt ist (erster Fehler, besagt das ein wenig).

also vielleicht mal ein beispiel pfx generieren ungefähr so:

openssl genrsa -out rsa_key.pem
openssl genrsa -out server.pem
openssl req -new -key rsa_key.pem -out cert.csr
openssl x509 -req -in cert.csr -signkey server.pem -out cert_signed.crt
openssl pkcs12 -export -out certkey.pfx -inkey server.pem -in cert_signed.crt

danach mal certkey.pfx importieren und checken ob das robust und deterministisch ist, falls ja, ist die schuld wahrscheinlich im importierten pfx zu suchen…

gruß

Hallo,

ich habe noch ein paar Tests gemacht und kurz gesagt, wird es einfach nicht besser.
Ich habe weiterhin sehr unterschiedliche Meldungen.

  • Self-signed Zertifikat
pkcs15-init --delete-objects privkey,pubkey --id 3 --store-private-key test2.pfx --format pkcs12 --auth-id 3 --verify-pin
Using reader with a card: Nitrokey Nitrokey Pro
User PIN required.
Please enter User PIN [Admin PIN]: 
Deleted 2 objects
error:23076071:PKCS12 routines:PKCS12_parse:mac verify failure
Please enter passphrase to unlock secret key: 
Importing 1 certificates:
  0: /C=DE/ST=Test/L=Test/O=test/OU=test/CN=<removed>/emailAddress=<removed>
pkcs15-init(1178,0x100c74580) malloc: Incorrect checksum for freed object 0x13020b810: probably modified after being freed.
Corrupt value: 0xf00000000000004d
pkcs15-init(1178,0x100c74580) malloc: *** set a breakpoint in malloc_error_break to debug
zsh: abort      pkcs15-init --delete-objects privkey,pubkey --id 3 --store-private-key     3

der 5te Versuch machte dann diese Ausgabe:

pkcs15-init --delete-objects privkey,pubkey --id 3 --store-private-key test2.pfx --format pkcs12 --auth-id 3 --verify-pin
Using reader with a card: Nitrokey Nitrokey Pro
User PIN required.
Please enter User PIN [Admin PIN]: 
NOTE: couldn't find privkey 03 to delete
NOTE: couldn't find pubkey 03 to delete
Deleted 0 objects
error:23076071:PKCS12 routines:PKCS12_parse:mac verify failure
Please enter passphrase to unlock secret key: 
Importing 1 certificates:
  0: /C=DE/ST=Test/L=Test/O=test/OU=test/CN=<removed>/emailAddress=<removed>

Der letzte Versuch scheint also geklappt zu haben.
Bei id 2 ist es analog.

Dann habe ich das richtige Zertifikat aus dem p12 rausgeholt und neu verpackt. Es ändert sich nichts. Importiert werden in die jeweiligen Endgeräte kann es ja. Dort läuft es problemlos.

Wenn ich dann Geduld aufbringe und es ständig versuche bis er es schluckt, akzeptiert Outlook es nicht. Es kommt immer die Meldung, dass das Zertifikat nicht gültig sei.

Liegt es evtl. am Apple M1 und OpenSC? Für S/MIME unexportierbar an Mitarbeiter zu geben, scheint mir das alles gerade zu instabil.

Über weitere Tipps wäre ich sehr dankbar.

Beste Grüße

hio,

uha, ja das scheint doch arg komisch, memory stuff klingt auch arg nach OpenSC problem, muss aber nicht zwingend, vielleicht eine Chance das gleiche auf einem Linux System zu testen ?

Dann bitte auch noch die OpenSC version checken, laut Releases · OpenSC/OpenSC · GitHub sollte 0.22 die M1 Tauglichkeit verbessern (überhaupt mitbringen?)…

Ausser in ID 3 kann generell kein anderer slot für Zertifikate benutzt werden soweit ich mich erinnere…

gruß

Hi,

ja es ist OpenSC 0.22 und MacOS 12.3 M1Pro
Wenn ich Lust und Laune habe, kann ich es noch unter Windows 11 testen. Gerade fehlt mir der Nerv dazu :wink: Allerdings sollten die Keys hauptsächlich mit Mac genutzt werden.

Gruß

Leider hatte ich unter Windows auch nicht mehr erfolg…OpenSC 0.22

Fehler macht er zwar beim Import nicht, aber das Zertifikat ist auch nicht auf dem Nitro.

Kann der Nitrokey 3 das auch schon alles? Also vor allem S/MIME wäre mir wichtig und nice-to-have FIDO(2)

Oi,

es gibt auch eine maximale Zertifikatsgröße, die der NK Pro2 unterstützt, glaube es waren 2048bytes, das kann auch ein Problem sein ? Wie wird gecheckt ob das Zertifikat auf dem NK Pro2 ist?

Grundsätzlich könnte man das ungefähr so testen ob das Zertifikat vorhanden ist (dafür das Zertifikat aus dem p12 container rausholen):

❯ pkcs15-init --store-certificate  cert_signed.crt --id 3
Using reader with a card: Nitrokey Nitrokey Pro (000000000000000000008161) 00 00
Security officer PIN [Admin PIN] required.
Please enter Security officer PIN [Admin PIN]: 
❯ pkcs15-tool --read-certificate  3 > read_test.crt
❯ diff read_test.crt cert_signed.crt && echo "cool!"
cool!

ansonsten halt mal schauen ob das nicht zu groß ist, leider haben die Unmengen von Meta-Daten die Zertifikate echt schnell wachsen lassen…

FIDO2 geht, s/mime bzw. allgemeiner OpenPGPCard geht noch nicht, hoffentlich irgendwann im Sommer…

Guten Morgen,

alles nicht optimal. Habe gerade noch ein paar Tests gemacht, aber das Ergebnis deutet eher auf irgend ein OpenSC-Fehler hin. Ich weiß es nicht genau. Das Zertifikat hat 1.838 Byte und ich brauche schon ein paar Anläufe bis er es dann schlussendlich ohne Ärger importiert. Allerdings funktioniert das Zertifikat dann trotzdem nicht. Erkannt wird es in Outlook, aber nutzen kann ich es nicht.
Aber damit ist leider der Stick für meinen Einsatzzweck erstmal raus :-/

pkcs15-tool --list-certificates                                                                                          
Using reader with a card: Nitrokey Nitrokey Pro
X.509 Certificate [Cardholder certificate]
	Object Flags   : [0x00]
	Authority      : no
	Path           : 3f007f21
	ID             : 03
	Encoded serial : 02 10 61526C8AB1822A8C2947C1447C83551C

pkcs15-tool --read-certificate  3 > read_test.crt
Using reader with a card: Nitrokey Nitrokey Pro

diff read_test.crt test.pem && echo "cool"                                        
cool

Beste Grüße

schön, gibt nichts besseres als nicht-deterministische Fehler, nur zu Sicherheit, diese beiden Dokumente auch schon angeschaut?

Leider ja. Aber das hilft bei dem Problem nicht.