Аутентификация на PHP и X.509 - Проверка эмитента сертификата


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

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

TC

Author: TC Fox, 2011-08-27

2 answers

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

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

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

 1
Author: gview, 2011-08-27 02:46:34

Если вы не хотите использовать 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
Author: neubert, 2012-04-23 04:01:23