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>
fonte
2014-06-16 11:26:34
Hai letto http://stackoverflow.com/questions/4501196/keygen-tag-in-html5? – atomicinf
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
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