Как передать клиентский сертификат в PHP?

Пытаюсь сделать авторизацию по самоподписанным сертификатам в своем API.
Дошел до проверки сертификата на сервере и немного завис. Хотел сделать проверку сертификатов на уровне PHP через OpenSSL, но не могу передать через nginx нужные fastcgi_param. (в $_SERVER нет сертификатов, которые присылает клиент)
Нашел кучу статей как сделать проверку на уровне nginx, но ни одной, как просто передать сертификаты в PHP.
На стороне клиента передаю через curl подписанные сервером клиентские сертификаты так:
$opts[CURLOPT_CAPATH] = '';
$opts[CURLOPT_CAINFO] = realpath(SRC_DIR .'/../etc/ssl/root_CA.crt');
$opts[CURLOPT_SSLCERT] = realpath(SRC_DIR .'/../etc/ssl/client.crt');
$opts[CURLOPT_SSLCERTPASSWD] = '';
$opts[CURLOPT_SSLKEY] = realpath(SRC_DIR .'/../etc/ssl/client.key');

плюс добавляю
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,

Подскажите, можно ли на nginx обойтись без проверки сертификата на уровне веб-сервера и передать их в FastCGI - в манах не нашел.
  • Вопрос задан
  • 3353 просмотра
Пригласить эксперта
Ответы на вопрос 1
merryjane
@merryjane
Системный администратор
В nginx попробуйте установить:
fastcgi_param HTTPS on;

Также посмотрите на переменные для модуля ngx_http_ssl_module:
nginx.org/ru/docs/http/ngx_http_ssl_module.html
Можно попробовать из них взять нужную информацию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы