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

原创 2005年04月28日 20:00:00

一,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

艰难安装LDAP,SSL认证

第一章1.      下载gcc下载地址:rpm foundhttp://rpmfind.net/linux/rpm2html/search.php?query=gcc&submit=Search+....
  • luyang1016
  • luyang1016
  • 2007年06月25日 16:34
  • 7996

OpenLDAP查看证书信息

# certutil -d /etc/openldap/certs/ -L -n 'OpenLDAP Server' Certificate:     Data:         Version...
  • xfg0218
  • xfg0218
  • 2018年01月02日 22:39
  • 252

PHP操作证书

/**  * Certificate Class  *  * 处理证书:获取证书信息,匹配证书密钥等  *  * @package CodeIgniter  * @subpackage Librari...
  • zy531
  • zy531
  • 2015年05月08日 10:38
  • 1054

PHP获取SSL客户端证书信息

项目需要获取到客户端的证书信息,https都配置走通了,只有证书和key才能登陆网站,但是想要做到,相应的证书只能其相应的账号登陆,这就只有在有自己的key而且知道相应的账号密码才能登陆。 之前也没做...
  • u013828206
  • u013828206
  • 2016年09月06日 10:35
  • 2227

java通过ssl连接LDAP服务器(包括LDAP服务器搭建、openssl数字证书生成、openldap服务器配置启动)

LDAP服务器搭建、openssl证书生成、openldap服务器配置启动,java使用ssl连接到LDAP服务器...
  • chenyatang
  • chenyatang
  • 2015年06月15日 17:58
  • 3258

PHP连接LDAP(OpenLDAP和Wins Active Directory)的用法

PHP连接LDAP(OpenLDAP和Wins Active Directory)的用法  关于这个问题网上有很多资料,但是或多或少都存在一些问题。下面讲一下我的方法并加了几个我碰到...
  • zhanghgsr
  • zhanghgsr
  • 2011年11月30日 23:07
  • 1871

openLDAP操作命令

转自:http://blog.sina.com.cn/s/blog_472b9eb20100ni0n.html
  • xyy511
  • xyy511
  • 2014年07月23日 09:49
  • 1092

phpLdap的安装

1. 安装openldap2. 安装gettext软件,配置php的时候加上gettext的路径 ./configure --with-gettext[=DIR].3. 还需要添加ldap安装路径  ...
  • heshuai64
  • heshuai64
  • 2008年01月22日 16:14
  • 394

Centos6.5安装OpenLDAP

一、基本概念 DN、OU、DC、O,这些概念网上都有资料。 一般用来做用户认证,我是拿来做系统用户认证,很多人做FTP或Samba用户认证。   二、Server端的安装与配置...
  • cooljsz
  • cooljsz
  • 2014年08月03日 15:53
  • 3693

cer证书安装

 在web上如何自动安装用户证书及根证书 微软的xenroll中有一个接口acceptpkcs7提供了证书的安装功能,本文将为您讲述如何通过该接口实现在web上自动安装用户证书及根证书,并...
  • swingling
  • swingling
  • 2014年08月18日 23:22
  • 371
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:openldap安装以及存取读取证书操作(PHP)
举报原因:
原因补充:

(最多只允许输入30个字)