2012-01-09 11 views
13

Stiamo creando un'autenticazione a tre fattori per un sito Web a causa di requisiti legali in un paese scandinavo. Il cliente utilizza i plug-in del browser con marchio NetID per eseguire l'autenticazione del certificato PKCS # 11 nel browser. Le smartcard vengono fornite centralmente da un partner sul cliente.Sito Web Autenticazione smart card PKSC# 11 e certificati client SSL

Questo argomento non dispone di molte risorse o esercitazioni online disponibili. Qualcuno potrebbe avere dei suggerimenti per implementazioni o tutorial di esempio su come eseguire l'autenticazione PKCS11 in un browser web?

EDIT: trovato circa i certificati client SSL

  • Sembra che il metodo di autenticazione è SSL certificato client

  • Come gestire relazione tra gli utenti e le loro smartcard?

  • Gli utenti ci consegnano le loro chiavi pubbliche e ci autentichiamo contro di loro?

  • Dobbiamo firmare/fornire ogni utente singolarmente utilizzando il nostro certificato?

  • Tutte le smartcard utente contengono una chiave "generica" ​​che testiamo con un certificato del fornitore?

http://www.garex.net/apache/

http://www.impetus.us/~rjmooney/projects/misc/clientcertauth.html

https://en.wikipedia.org/wiki/PKCS11

https://service.secmaker.com/examples/plugin.aspx

risposta

8

Non farlo con JavaScript. JavaScript cryptography has a number of problems, e non penso che molti browser ti permetteranno di accedere facilmente a PKCS # 11 da JavaScript (in esecuzione dalla pagina).

Un numero di browser supporta PKCS # 11 per l'autenticazione HTTPS, ovvero utilizzando PKCS # 11 per l'autenticazione del certificato client come parte della connessione SSL/TLS (come parte di HTTPS).

Supponendo che si dispone già di una libreria PKCS # 11 disponibili (diciamo OpenSC in /usr/lib/opensc.so), è possibile configurare Firefox usarlo:

  • Preferenze -> Avanzate -> crittografia, andare in "Dispositivi di sicurezza"
  • Fare clic su 'Load'
  • scegliere un nome del modulo (per il proprio riferimento nella lista) e puntare al file /usr/lib/opensc.so (o qualunque sia il modulo appropriato PKCS # 11 è nel tuo caso).

Quindi, quando ci si connette a un sito Web che richiede un certificato client, il browser dovrebbe offrire all'utente di scegliere un certificato dal dispositivo abilitato PKCS # 11.

Il meccanismo di configurazione PKCS # 11 varierà da un browser all'altro, ma in genere si tratta di impostare il percorso del modulo PKCS # 11.

Per quanto ne so, Internet Explorer non usa PKCS # 11 (almeno non senza supporto extra), ma dovrebbe invece affidarsi a MS CryptoAPI e InfoCards.

Sul lato server, è necessario configurare il requisito per l'autenticazione del certificato client. Niente di specifico per PKCS # 11 lì.


In seguito alla vostra modifica, si dovrebbe leggere sulle autorità di certificazione (CA) e la chiave pubblica (PKI) Infrastrutture. Potresti implementare la tua PKI interna, ma sembra che i tuoi requisiti siano integrati con una PKI esistente. Questo è principalmente un problema amministrativo, quindi controlla con chi fa questo requisito per vedere su quale CA vogliono fare affidamento (probabilmente il loro).

Quando si utilizza l'autenticazione del certificato client, il client presenterà il certificato (che contiene la chiave pubblica dell'utente e altri attributi, tra cui un identificativo: il Nome distinto dell'oggetto) e l'handshake SSL/TLS assicurerà che il client abbia il chiave privata per questo certificato di chiave pubblica. Quindi, il server verifica questo certificato nei confronti delle CA che si fida (anche questa è un'impostazione SSL sul lato server).

Dopo aver configurato le CA che si desidera considerare affidabili, la mappatura viene solitamente eseguita utilizzando il DN oggetto del certificato su un nome utente interno, se necessario. Non esiste una regola complessa per questo, poiché dipende dallo schema di denominazione dell'utente interno. Detto questo, è spesso ragionevole utilizzare il DN soggetto completo come nome utente.

+0

Grazie. Questo mi ha chiarito un sacco di cose e sulla base di ciò sono stato in grado di inviare ulteriori domande al fornitore di smart card su come verranno gestiti i certificati. –

2

Ora puoi farlo. L'autenticazione Web tramite smart card o token PKCS # 11 può essere implementata utilizzando la versione Silverlight di NCryptoki. Vedere http://www.ncryptoki.com

Hai due chanches:

1) utilizzando la versione di Silverlight di NCryptoki e sviluppare il proprio controllo utente Silverlight che implementa il protocollo di autenticazione utilizzando PKCS # 11 funzioni fornite dalla smart card

2) utilizzando il plug-in JQuery basato sulla versione Silverlight sopra e implementando il protocollo di autenticazione in JavaScript chiamando le funzioni PKCS # 11 in JavaScript

+0

Grazie. Silverlight è davvero un cavallo morente e legato a una piattaforma, quindi non è un'opzione qui. Tuttavia, sono riuscito a risolvere questo problema con i certificati lato client di Apache e SSL. Pubblicherò la mia risposta qui non appena sarà finita. –

+0

@MikkoOhtamaa puoi pubblicare la tua soluzione qui. – guleryuz

3

Attualmente non è possibile eseguire PKCS # 11 all'interno del processo del browser. Tutta la tecnologia nativa adatta sta morendo (NPAPI) o non è implementata attraverso tutti i browser. Devi farlo al di fuori del browser e creare alcune comunicazioni di interconnessione.