我想在我的网站上只有X.509身份验证后才能访问的特定页面。 Catch是,我希望它可以提供给所有具有由特定中间CA颁发的匹配证书的客户端(我打算在自生根CA下有几个中间CA,但只有一个由一个特定的中级CA可以访问此页面)。这可能使用PHP?PHP和X.509身份验证 - 检查证书颁发者
让我知道如果我需要进一步阐述,我会尝试添加更多细节。谢谢你的帮助!
TC
我想在我的网站上只有X.509身份验证后才能访问的特定页面。 Catch是,我希望它可以提供给所有具有由特定中间CA颁发的匹配证书的客户端(我打算在自生根CA下有几个中间CA,但只有一个由一个特定的中级CA可以访问此页面)。这可能使用PHP?PHP和X.509身份验证 - 检查证书颁发者
让我知道如果我需要进一步阐述,我会尝试添加更多细节。谢谢你的帮助!
TC
是的。当您使用SSL扩展和openssl_x509_parse功能获取证书信息时,您将可以访问证书中的所有信息。你应该能够做到这一点在你的PHP脚本:
var_dump(openssl_x509_parse($_SERVER['SSL_CLIENT_CERT']));
你应该是数组,有一个与包含有关客户端证书发行者信息的阵列的“发行人”关键在看,我要去承担这会为您提供所需的信息。
永远让我们的客户端证书表现出Apache的行为,但是,这正是我所需要的。谢谢! –
如果您不想使用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);
?>
如果幸运的话,你可能会发现一个CGI环境变量,以确认CA http://httpd.apache.org/docs/2.0/mod/mod_ssl.html#envvars - 如果服务器协商的SSL/TLS连接与客户端证书(如果这是你正在尝试)。 – mario