关于PHP 收集客户端证书

在Unix下Apache中配置SSL完成,客户端提交客户证书后,服务器端如何获取提交证书的相关信息?如证书的有效期、微缩图等?由于是在Unix下,所以用不了微软的CAPICOM控件,求教~~

-- --
PHP Variables
_SERVER["SSL_CLIENT_S_DN"] /C=CN/ST=JS/L=NJ/O=Test co,ltd./CN=Test co,ltd./[email protected]
_SERVER["SSL_CLIENT_V_START"] May 29 05:50:14 2007 GMT
_SERVER["SSL_CLIENT_V_END"] May 28 05:50:14 2008 GMT
你写一个

就可以看到了
-- --
把以下这些信息换成PHP的写法就可以了
Request.ServerVariables('Https_Secretkeysize')
服务器验证私人关键字的位数如1024
Request.ServerVariables('Https_Server_Issuer')
服务器证书的发行者字段
Request.ServerVariables('Https_Server_Subject')
服务器证书的主题字段
Request.ServerVariables('Auth_Password')
当使用基本验证模式时,客户在密码对话框中输入的密码
Request.ServerVariables('Auth_Type')
是用户访问受保护的脚本时,服务器用於检验用户的验证方法
Request.ServerVariables('Auth_User')
代证的用户名
Request.ServerVariables('Cert_Cookie')
唯一的客户证书ID号
Request.ServerVariables('Cert_Flag')
客户证书标妼,如有客户端证书,则bit0为0如果客户端证书验证无效,bit1被设置为1
Request.ServerVariables('Cert_Issuer')
用户证书中的发行者字段
Request.ServerVariables('Cert_Keysize')
安全套接字层连接关键字的位数,如128
Request.ServerVariables('Cert_Secretkeysize')
服务器验证私人关键字的位数如1024
Request.ServerVariables('Cert_Serialnumber')
客户证书的序列号字段
Request.ServerVariables('Cert_Server_Issuer')
服务器证书的发行者字段
Request.ServerVariables('Cert_Server_Subject')
服务器证书的主题字段
Request.ServerVariables('Cert_Subject')
客户端证书的主题字段
Request.ServerVariables('Content_Type')
客户发送的formQg容或HTTPPUT的数据类型


-- --
之前也试过
echo $_SERVER["CLIENT_CERT"]."";
echo $_SERVER["SSL_CLIENT_S_DN"];
之类的属性,但是显示不出来,
另外在别人的机器上phpinfo();后是可以看到_SERVER["CLIENT_CERT"]这类的这些属性的值位no value,可是在我本地的中phpinfo();后却没有这些属性的值了,不知是否php在用SSL时是否还需要进行什么配置?
目前是我的Apache的双向SSL都已经配成功的了,可以提交证书访问test.php页面的。但_SERVER["CLIENT_CERT"]这类跟证书相关的参数属性值都取不到。
Apache的SSL.conf配置中要加上: SSLOptions +StdEnvVars
然后你就可以在php中通过 $_SERVER['????']来获得大量与SSL有关的信息了,比如 $_SERVER['SSL_CLIENT_S_DN']

 

你可能感兴趣的:(apache,PHP,unix,脚本)