Ответ 1
В Mozilla есть несколько рабочих примеров:
https://developer.mozilla.org/en-US/docs/HTML/Element/keygen
Мне трудно понять, как использовать <keygen>
.
Я не смог найти демо для него, который используется для аутентификации. Когда я добавляю тэг <keygen>
в форму, он отправляет открытый ключ.
Что делать после получения открытого ключа?
Может кто-нибудь, пожалуйста, дайте мне пример приложения, которое использует <keygen>
и выполняет ли аутентификацию?
В Mozilla есть несколько рабочих примеров:
https://developer.mozilla.org/en-US/docs/HTML/Element/keygen
Мои объяснения взяты из этого примера 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>