我试图在我的网站上有一个特定页面,只有在 X.509 身份验证后才能访问。问题是,我希望它可供所有具有由特定中间 CA 颁发的匹配证书的客户使用(我打算在自生成的根 CA 下有一些中间 CA,但只有一个特定中间 CA 颁发的客户端证书CA 可以访问此页面)。这可能使用PHP吗?
让我知道是否需要进一步详细说明,我会尝试添加更多细节。谢谢你的帮助!
TC
我试图在我的网站上有一个特定页面,只有在 X.509 身份验证后才能访问。问题是,我希望它可供所有具有由特定中间 CA 颁发的匹配证书的客户使用(我打算在自生成的根 CA 下有一些中间 CA,但只有一个特定中间 CA 颁发的客户端证书CA 可以访问此页面)。这可能使用PHP吗?
让我知道是否需要进一步详细说明,我会尝试添加更多细节。谢谢你的帮助!
TC
是的。当您使用 SSL 扩展和 openssl_x509_parse 函数获取证书信息时,您将可以访问证书中的所有信息。您应该能够在您的 php 脚本中执行此操作:
var_dump(openssl_x509_parse($_SERVER['SSL_CLIENT_CERT']));
您应该在该数组中看到一个“颁发者”密钥,其中包含有关客户端证书颁发者的信息的数组,我假设它可以为您提供所需的信息。
如果你不想使用 OpenSSL,你可以使用phpseclib 的最新 SVN,一个纯 PHP X.509 解析器。例如。
<?php
include('File/X509.php');
$x509 = new File_X509();
$x509->loadX509($_SERVER['SSL_CLIENT_CERT']);
echo $x509->getIssuerDN(true);
?>