2012-07-29 12 views
16

Ho difficoltà a capire come utilizzare <keygen>.Esiste un esempio keygen HTML5?

Non sono riuscito a trovare la demo, utilizzata per l'autenticazione. Quando aggiungo il tag <keygen> al modulo, invia la chiave pubblica.

Cosa si deve fare dopo aver ricevuto la chiave pubblica?

Qualcuno può darmi un'applicazione di esempio che utilizza <keygen> e fa l'autenticazione?

+0

Hai letto http://stackoverflow.com/questions/4501196/keygen-tag-in-html5? – atomicinf

+1

Sì, ho letto il link qui sopra. La mia domanda è di generare il certificato sul server e inviarlo per l'autenticazione dell'utente. Sto cercando un esempio completo che generi il certificato usando la chiave pubblica keygen – swingmicro

+1

Quindi avresti visto: Questa specifica non specifica come deve essere usata la chiave privata generata. Si prevede che dopo aver ricevuto la struttura SignedPublicKeyAndChallenge (SPKAC), il server generi un certificato client e lo restituisca all'utente per il download; questo certificato, una volta scaricato e archiviato nell'archivio chiavi insieme alla chiave privata, può quindi essere utilizzato per autenticare i servizi che utilizzano TLS e l'autenticazione del certificato. – maxwellb

risposta

8

mie spiegazioni vengono da questo PHP/Apache example. È una spiegazione semplificata, guarda l'esempio originale per i dettagli completi.

Il client genera una chiave pubblica per il server e mantiene una chiave privata.

<form> 
    <keygen name="pubkey" challenge="randomchars"> 
    <input type="submit" name="createcert" value="Generate"> 
</form> 

La chiave pubblica viene estratto dal server:

$key = $_REQUEST['pubkey']; 

Il server di costruire un certificato client:

$command = "/usr/bin/openssl ca -config ".$opensslconf." -days ".$days." -notext -batch -spkac ".$certfolder.$uniq.".spkac -out ".$certfolder.$uniq." -passin pass:'".$capw."' 2>&1"; 
$output = shell_exec($command); 

e inviarlo al client.

È quindi possibile configurare Apache per consentire l'accesso ai client autenticato:

SSLEngine on 
SSLCipherSuite HIGH:MEDIUM 
SSLCertificateFile /etc/CA/certs-pub/domain.der 
SSLCertificateKeyFile /etc/CA/certs-priv/domain.pem 
SSLCACertificateFile /etc/CA/certs-pub/ca.pem 
SSLCARevocationFile /etc/CA/crl/cacrl.pem 
<Location /secure_area/> 
    SSLVerifyClient require 
    SSLVerifyDepth 1 
</Location> 
Problemi correlati