Запросить сертификат клиента через PHP для аутентификации

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

Сертификат генерируется по мере необходимости следующим фрагментом:

$res = \openssl_pkey_new(Config\authentication_key_options());

\openssl_pkey_export($res, $private);
$public = \openssl_pkey_get_details($res);
$public = $pubKey["key"];

# Generate the x509 cert
$csr = \openssl_csr_new(Config\authentication_dn(), $private);
$x509 = \openssl_csr_sign($csr, null, $private, Config\AUTHENTICATION_CERT_VALID_FOR);

# Generate the pcks12
\openssl_pkcs12_export($x509, $p12, $private, null);

Сгенерированный сертификат затем отправляется в браузер клиента для загрузки, а закрытый ключ сохраняется на стороне сервера для дальнейшего использования.

Я добавил следующее в конфигурацию apache:

SSLVerifyClient optional_no_ca
SSLVerifyDepth  10
SSLOptions +ExportCertData +StdEnvVars

Когда этого не произошло, я попытался, чтобы мой тестовый скрипт отправил заголовок 401, но безрезультатно. Добавление опций WWW-Authenticate, как и следовало ожидать, было одинаково неудачным:

header("HTTP/1.0 401");
header("WWW-Authenticate: Basic");
header("WWW-Authenticate: transport mode=\"tls-client-certificate\"");

Итак, что я должен добавить к программному (НЕ статически через конфиги apache) запросу на стороне браузера?

2

Решение

После прочтения кажется, что это просто невозможно.

Вернуться к чертежной доске я иду

0

Другие решения

Что я знаю

  1. Сертификаты CA должны быть загружены в JKS.
  2. «SSLVerifyClient option_no_ca» это должно быть SSLVerifyClient require
0

По вопросам рекламы [email protected]