Есть ли пример кейгена HTML5? - программирование
Подтвердить что ты не робот

Есть ли пример кейгена HTML5?

Мне трудно понять, как использовать <keygen>.

Я не смог найти демо для него, который используется для аутентификации. Когда я добавляю тэг <keygen> в форму, он отправляет открытый ключ.

Что делать после получения открытого ключа?

Может кто-нибудь, пожалуйста, дайте мне пример приложения, которое использует <keygen> и выполняет ли аутентификацию?

4b9b3361

Ответ 2

Мои объяснения взяты из этого примера PHP/Apache . Это упрощенное объяснение, посмотрите на оригинальный пример для полной информации.

Клиент создает открытый ключ для сервера и сохраняет закрытый ключ.

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

Открытый ключ извлекается сервером:

$key = $_REQUEST['pubkey'];

Сервер создает сертификат клиента:

$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);

и отправить его клиенту.

Затем вы можете настроить Apache для доступа к аутентифицированным клиентам:

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>