PHP和X.509身份验证 - 检查证书颁发者

时间:2011-08-27 02:13:13

标签: php authentication x509 pki

我正在尝试在我的网站上有一个特定页面,只有在X.509身份验证后才能访问。 Catch是,我希望所有拥有特定中间CA颁发的匹配证书的客户端都可以使用它(我打算在自生成的根CA下面有一些中间CA,但只有一个由一个特定的中级CA颁发的客户端证书可以访问此页面)。这可能使用PHP吗?

如果我需要进一步详细说明,请告诉我,我会尝试添加更多细节。谢谢你的帮助!

TC

2 个答案:

答案 0 :(得分:1)

是。当您使用SSL扩展和openssl_x509_parse函数获取证书信息时,您将可以访问证书中的所有信息。你应该可以在php脚本中执行此操作:

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

你应该在该数组中看到有一个'issuer'密钥,其中包含一个包含客户端证书颁发者信息的数组,我将假设它可以为您提供所需的信息。

答案 1 :(得分:1)

如果您不想使用OpenSSL,可以使用phpseclib, a pure PHP X.509 parser的最新SVN。例如

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

$x509 = new File_X509();
$x509->loadX509($_SERVER['SSL_CLIENT_CERT']);
echo $x509->getIssuerDN(true);
?>