分享
 
 
 

openldap安装以及存取读取证书操作(PHP)

王朝php·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

一,openldap在linux下的安装

1,编译安装Berkeley DB

tar -zxvf db-4.2.52.tar.gz

cd /usr/local/db-4.2.52.NC/build_unix

../dist/configure

make

make install

2.编译安装openldap

cd openldap-2.1.29

env CPPFLAGS="-I/usr/local/BerkeleyDB.4.2/include" LDFLAGS="-L/usr/local/BerkeleyDB.4.2/lib" ./configure --prefix=/usr/local/openldap -- enable-ldbm

make depens

make

(make test)

make install

3.测试一下

cd /usr/local/openldap/libexec

./slapd -d 1 (屏幕会出现一些信息,最后要是出现slapd start 就成功了,要是没出现这个,呵呵那我也不知道怎么办,再重新编译一下吧.)

cd ../bin

ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts

要是返回下列信息,那恭喜你,呵呵openldap就安装成功了.

dn:

namingContexts: dc=example,dc=com.

还有很多命令可以用了,推荐一下

二,用PHP操作LDAP服务器

1.建立自己的objectclass.

因为我们证书subject有六项,但是我在默认的几个schema中没有找到包含所有这六项的objectclass,所以还是我们自己创建一个吧.

vi /usr/local/openldap/etc/openldap/schema/inetorgperson.schema

我直接在最后加上下面这段,呵呵,其实也很简单,我就是照着objectclass inetorgperson修改了一下而已,其中的具体意思呵呵OpenLDAP 2.1 管理员指南有解释,不过我也没看懂.

objectclass ( 2.16.840.1.113730.3.2.3

NAME 'guestcertificate'

DESC 'guestcertificate'

SUP top

STRUCTURAL

MAY (

mail $ userCertificate $ cn $ c $ st $ l $ o $ ou )

)

当然也可以新建一个schema文件,把上面的这些包含进去,然后在slapd.conf中再把这个文件包含上就可以了.

2,规划条目结构.

这里主要用到了PHP的几个函数(PHP和APACHE的安装过程http://www.infosecurity.org.cn/forum/read.php?fid=10&tid=34&fpage=1)

$ds=ldap_connect("localhost");

$r=ldap_bind($ds,"cn=root,dc=sage,dc=com","secret");

//

$info["c"]="cn";

$info["objectClass"]="guestcertificate";

$lr=ldap_add($ds, "c=cn,dc=sage,dc=com",$info);

//

$info["c"]="cn";

$info["st"]="gd";

$info["objectClass"]="guestcertificate";

$lr=ldap_add($ds, "st=gd,c=cn,dc=sage,dc=com",$info);

//

$info["c"]="cn";

$info["st"]="gd";

$info["l"]="sz";

$info["objectClass"]="guestcertificate";

$lr=ldap_add($ds, "l=sz,st=gd,c=cn,dc=sage,dc=com",$info);

//

$info["c"]="cn";

$info["st"]="gd";

$info["l"]="sz";

$info["o"]="company";

$info["objectClass"]="guestcertificate";

$lr=ldap_add($ds, "o=company,l=sz,st=gd,c=cn,dc=sage,dc=com",$info);

//

$info["c"]="cn";

$info["st"]="gd";

$info["l"]="sz";

$info["o"]="company";

$info["ou"]="unit";

$info["objectClass"]="guestcertificate";

$lr=ldap_add($ds, "ou=unit,o=company,l=sz,st=gd,c=cn,dc=sage,dc=com",$info);

好了,到这里已经把我的commomname以前的树状结构规划好了.

ldap_connect是与服务器连接,ldap_bind是绑定服务器,第二个参数是在slapd.conf中定义的rootdn,第三个是密码.

ldap_add是增加条目,当然我们这里是第一次增加条目所以每个都要添加,要是以后要添加的话,先用ldap_search查询一下该条目有没有,有了以后就可以不添加了,要是不想做判断也可以,只是会出现Add: Already exists in /wwwroot/add.php on line 7,呵呵不过确实可以工作.

下面来添加用户的证书,证书格式必需是DER格式的,加入是PEM格式的话可以转换一下.

openssl x509 -outform DER -in cert.pem -out cert.der

//

$fp = fopen("/ssl.crt/cert.der", "r");

$cert = fread($fp, 8192);

fclose($fp);

//

$info["c"]="cn";

$info["st"]="gd";

$info["l"]="sz";

$info["o"]="company"

$info["ou"]="unit"

$info["cn"]="commomname";

$info["userCertificate:binary"]="$cert";

$info["objectClass"]="guestcertificate";

$lr=ldap_add($ds, "cn=commomname,ou=unit,o=company,l=sz,st=gd,c=cn,dc=sage,dc=com",$info);

好了一个证书的完整添加过程就完成了,可以用ldap自带的命令ldapsearch查询一下,假如写入了一些证书以后能够发现它们都是层次结构的,查询上一级条目可以列出所有下一级条目.

证书的删除操作:

bool ldap_delete ( resource link_identifier, string dn);

证书的修改操作:

我想证书的修改操作可能也不是修改吧,也就是将老证书删除了,然后按照用户输入的新信息形成新的证书,将新证书写入服务器中.

证书的查询:

用ldap_search查询以后,再$info=ldap_get_entries($ds,$sr);那么证书的c,st,l等就都存在了info数组中.

-----------------------------the end----------------------------------------------------

网上有关PHP操作LDAP存取证书的文章好像不太多,我也是初学,呵呵可能有很多错误,这里有很多是借鉴别人的.也感谢master,文中很多都是他指导我的.

本问题的讨论地址:http://www.infosecurity.org.cn/forum/read.php?fid=12&tid=47&fpage=1

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有