Chinaunix

标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教 [打印本页]

作者: yanger    时间: 2003-07-17 16:26
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
我的机器里(RedHat9)装的apache支持SSL连接,当客户机连服务器时要提交证书给服务器,请问我用PHP如何才能抓到客户提交的证书呀。
有做过这个的吗,请指教!!!

听说好象是从一个环境变量里拿。
作者: remoter    时间: 2003-07-18 14:09
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
你要抓整个证书还是证书的一些参数?

有一些环境变量:

SSL_SERVER_I_DN_O
SSL_SERVER_I_DN_OU
SSL_SERVER_I_DN_ST
SSL_SERVER_M_SERIAL
SSL_SERVER_M_VERSION
SSL_SERVER_S_DN
SSL_SERVER_S_DN_C
SSL_SERVER_S_DN_CN
SSL_SERVER_S_DN_Email
SSL_SERVER_S_DN_L
SSL_SERVER_S_DN_O
SSL_SERVER_S_DN_OU
SSL_SERVER_S_DN_ST
SSL_SERVER_V_END
SSL_SERVER_V_START
SSL_SESSION_ID
SSL_VERSION_INTERFACE
SSL_VERSION_LIBRARY
作者: yanger    时间: 2003-07-18 14:47
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
要抓整个证书,我从一篇文档上看到有这样一个函数
bool openssl_x509_export ( mixed x509, string &output [, bool notext])

请问第一个参数是什么东西,怎样得到
作者: remoter    时间: 2003-07-18 15:02
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
你抓整个证书有用吗,这些变量应该满足要求了吧

SSL_SERVER_I_DN_O
SSL_SERVER_I_DN_OU
SSL_SERVER_I_DN_ST

指的是root CA的一些信息


比如
SSL_CLIENT_I_DN_O=Microsoft Group  
SSL_CLIENT_I_DN_OU=Microsoft China Division  


SSL_SERVER_S_DN_*

应该是客户端的信息,比如
SSL_CLIENT_S_DN_CN=Jack Zhang  
SSL_CLIENT_S_DN_Email=Jack.zhang@mail.com

编程的时候直接用这些变量不就行了。

比如:

<?php
echo $SSL_CLIENT_S_DN_CN;     
?>;
作者: yanger    时间: 2003-07-18 15:05
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
我要验证客户的证书啊,所以必须要拿到整个证书     

还有就是我怎么用
echo $SSL_CLIENT_I_DN_O;不行啊
我的IE的URL是
https://192.168.2.200/yanger/certtest.php

这样对吗?
作者: remoter    时间: 2003-07-18 15:12
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
我不清楚你要怎样的验证,你是不是要仔细验证每一个人的呢?还是只要有合适的证书就可以?

apache自己可以验证客户端证书,比如接受哪个CA发的证书,如果想要针对个人进行访问控制,通过引用变量完全可以解决。
作者: yanger    时间: 2003-07-18 15:16
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
我的流程大致如下:

用户提交其证书,我拿来验证,如果通过验证,则将用户证书中的某些内容入库。。。

apache验证客户证书,是要预先将根证书倒入apache吗,如何倒入
作者: remoter    时间: 2003-07-18 15:17
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
你的客户端证书是用什么生成的?     


给我个内部网的地址我怎么能访问?
作者: yanger    时间: 2003-07-18 15:21
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
那个地址是我用来测试的php的,你不用访问,呵呵。
我是说测试有SSL操作的PHP是不是要用HTTPS
客户端证书证书可以预先倒入
作者: remoter    时间: 2003-07-18 15:25
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
在apache的配置文件里有这样的段落是关于验证客户端证书的,应该对你有帮助。

#<Location />;
#SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
#            and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
#            and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
#            and %{TIME_WDAY} >;= 1 and %{TIME_WDAY} <= 5 \
#            and %{TIME_HOUR} >;= 8 and %{TIME_HOUR} <= 20       ) \
#           or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
#</Location>;

其实在apache里就已经完成认证了,如果需要在php里做,只需要做更细粒度的访问控制或者个性化定制就可以了,可以充分引用那些变量。
作者: yanger    时间: 2003-07-18 15:25
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
老兄,留个QQ吧
作者: remoter    时间: 2003-07-18 15:28
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
留你的吧
作者: yanger    时间: 2003-07-18 15:31
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
apache预装的根证书是不是只要放在一个目下就行了,apache会自动寻找啊。
作者: yanger    时间: 2003-07-18 15:32
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
103135398
作者: remoter    时间: 2003-07-18 15:33
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
既然做SSL,就自己做证书吧
作者: yanger    时间: 2003-07-18 15:35
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
不是,证书是已经就有的,我只需要验证一下就可以
谢谢这位老兄了,我先试试,有事再请教。

加我了吗?
作者: laoheimao    时间: 2003-07-20 23:43
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
[quote]原帖由 "remoter"]既然做SSL,就自己做证书吧[/quote 发表:
     
大虾,你知道那里有免费的IE承认的证书呀。verisign 的要钱
作者: remoter    时间: 2003-07-21 08:45
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
如果小范围试验、测试使用,可以自己生长证书,如果是正式使用,还是用目前商业的CA机构的证书比较好。
作者: remoter    时间: 2003-07-23 08:41
标题: 请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教
那就用OpenSSL做吧
作者: ch0235    时间: 2007-09-29 11:19
原帖由 remoter 于 2003-7-18 15:02 发表
你抓整个证书有用吗,这些变量应该满足要求了吧

SSL_SERVER_I_DN_O
SSL_SERVER_I_DN_OU
SSL_SERVER_I_DN_ST

指的是root CA的一些信息


比如
SSL_CLIENT_I_DN_O=Microsoft Group  
SSL_CLIENT ...


如果我使用的是usb key,可以用这个方法获得key的信息么?
作者: ch0235    时间: 2010-10-15 17:19
测试一个




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2