Аутентификация PHP и X.509 - Проверка эмитента сертификата - PullRequest
3 голосов
/ 27 августа 2011

Я пытаюсь, чтобы конкретная страница на моем сайте была доступна людям только после аутентификации X.509. Уловка в том, что я хочу, чтобы он был доступен всем клиентам, у которых есть соответствующий сертификат, выданный конкретным Промежуточным ЦС (у меня есть несколько промежуточных ЦС под самогенерируемым корневым ЦС, но только клиент сертификат, выданный одним конкретным промежуточным центром сертификации, может получить доступ к этой странице). Возможно ли это с помощью PHP?

Дайте мне знать, если мне нужно уточнить, и я постараюсь добавить больше деталей. Спасибо за вашу помощь!

TC

Ответы [ 2 ]

1 голос
/ 23 апреля 2012

Если вы не хотите использовать OpenSSL, вы можете использовать последнюю версию SVN phpseclib, чистый PHP X.509 парсер .например.

<?php
include('File/X509.php');

$x509 = new File_X509();
$x509->loadX509($_SERVER['SSL_CLIENT_CERT']);
echo $x509->getIssuerDN(true);
?>
1 голос
/ 27 августа 2011

Да.Когда вы получите информацию о сертификате, используя расширение SSL и функцию openssl_x509_parse, вы получите доступ ко всей информации в сертификате.Вы должны быть в состоянии сделать это в своем php-скрипте:

var_dump(openssl_x509_parse($_SERVER['SSL_CLIENT_CERT']));

В этом массиве вы должны увидеть, что есть ключ «эмитента» с массивом, содержащим информацию об эмитенте сертификата клиента, и я собираюсьпредположить, что это дает вам необходимую информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...