Abrufen von Zertifikaten von PKCS11 Smartcard ohne PIN / Passwort

8

Zusammenfassung: Wenn JCA über PKCS11 über OpenSC verwendet wird, wird die PIN beim Extrahieren von Zertifikaten angefordert.

Ich habe eine Anwendung, die mit einer Smartcard signieren muss. Die Smartcard wird von OpenSC unterstützt, daher verwende ich den in Java integrierten Wrapper-Provider pkcs11, um ihn zu verwenden. Aus funktionalen Gründen muss ich die Zertifikate in der Karte erhalten, ohne eine PIN angefordert zu haben. Wenn der Benutzer schließlich unterschreibt, dann wird natürlich die PIN benötigt.

Ich sehe, ich kann es von der Kommandozeile aus tun, ohne eine PIN anzugeben:

%Vor%

So weit, so gut.

In der Dokumentation von Oracle steht eindeutig: "Der Builder wird bei Bedarf mit dem zuvor konfigurierten Callback-Handler nach einem Passwort fragen" ( Ссылка ). Allerdings fordert mein Code immer den Pin als Sohn, wie ich KeyStore ks0 = ksbuilder0.getKeyStore(); aufrufen, auch nur beim Extrahieren öffentlicher Informationen (z. B. Zertifikate).

Folgt einem Auszug des Codes:

%Vor%

Es ergibt sich:

%Vor%

Wie Sie sehen können, wird das Passwort angefordert, bevor das Zertifikat erhalten wird. Mittels Debugging kann ich erkennen, dass das Passwort in der Zeile KeyStore ks0 = ksbuilder0.getKeyStore();

angefordert wird

Irgendeine Idee? Gibt es keine Möglichkeit, es so zu konfigurieren, wie ich es möchte? Irgendwelche weiteren Ideen oder Tests?

Außerdem: Kennen Sie eine andere Möglichkeit, auf Smartcards zuzugreifen, zum Beispiel direkt über einen JAVA2OpenSC-Wrapper oder ähnliches?

Danke,

    
Javier Sedano 16.01.2014, 16:53
quelle

4 Antworten

0

Schließlich gab es keine Lösung mit JCA. Die endgültige Lösung bestand darin, den PKCS11-Treiber direkt anzugreifen. Ich habe jacknji11 ( Ссылка ) und die PKCS11-Spezifikation ( Ссылка ).

    
Javier Sedano 23.07.2014, 05:22
quelle
6

Gelöst

Ich habe einen Weg gefunden, das öffentliche Zertifikat von der Chipkarte zu bekommen.

%Vor%

Das KeyStore.load () sollte mit PaswordProtection-Objekt mit leerem Pin bereitgestellt werden. Dadurch kann ich das öffentliche Zertifikat lesen und die Daten daraus extrahieren.

Ich habe dies mit drei verschiedenen Arten von Smartcards getestet und es arbeitet an allen von ihnen

    
Plamen Vasilev 04.02.2015 19:29
quelle
0

Nun, was ich einmal getan habe, war etwas wie

%Vor%

Die Datei pkcs.cfg ist eine Datei, die auf die Bibliothek "libpteidpkcs11.so" verweist, und Sie sollten sie an Ihren Code anpassen können. Meine liest:

%Vor%     
BlueMoon93 27.01.2014 14:42
quelle
0

Ein anderer Weg ist IAIK PKCS # 11 Wrapper . JavaDoc hier . Beispielcode unten.

%Vor%     
marioosh 02.12.2016 08:48
quelle

Tags und Links