免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 7103 | 回复: 21
打印 上一主题 下一主题

请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-07-17 16:26 |只看该作者 |倒序浏览
我的机器里(RedHat9)装的apache支持SSL连接,当客户机连服务器时要提交证书给服务器,请问我用PHP如何才能抓到客户提交的证书呀。
有做过这个的吗,请指教!!!

听说好象是从一个环境变量里拿。

论坛徽章:
0
2 [报告]
发表于 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

论坛徽章:
0
3 [报告]
发表于 2003-07-18 14:47 |只看该作者

请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教

要抓整个证书,我从一篇文档上看到有这样一个函数
bool openssl_x509_export ( mixed x509, string &output [, bool notext])

请问第一个参数是什么东西,怎样得到

论坛徽章:
0
4 [报告]
发表于 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;     
?>;

论坛徽章:
0
5 [报告]
发表于 2003-07-18 15:05 |只看该作者

请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教

我要验证客户的证书啊,所以必须要拿到整个证书     

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

这样对吗?

论坛徽章:
0
6 [报告]
发表于 2003-07-18 15:12 |只看该作者

请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教

我不清楚你要怎样的验证,你是不是要仔细验证每一个人的呢?还是只要有合适的证书就可以?

apache自己可以验证客户端证书,比如接受哪个CA发的证书,如果想要针对个人进行访问控制,通过引用变量完全可以解决。

论坛徽章:
0
7 [报告]
发表于 2003-07-18 15:16 |只看该作者

请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教

我的流程大致如下:

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

apache验证客户证书,是要预先将根证书倒入apache吗,如何倒入

论坛徽章:
0
8 [报告]
发表于 2003-07-18 15:17 |只看该作者

请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教

你的客户端证书是用什么生成的?     


给我个内部网的地址我怎么能访问?

论坛徽章:
0
9 [报告]
发表于 2003-07-18 15:21 |只看该作者

请问怎么用PHP抓SSL连接时用户提交的证书呀?高手指教

那个地址是我用来测试的php的,你不用访问,呵呵。
我是说测试有SSL操作的PHP是不是要用HTTPS
客户端证书证书可以预先倒入

论坛徽章:
0
10 [报告]
发表于 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里做,只需要做更细粒度的访问控制或者个性化定制就可以了,可以充分引用那些变量。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP