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.
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. –