我想在我的網站上只有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