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

LINUX+APACHE+PHP+BDB+OPENLDAP+PHPLDAPADMIN安装配置

主要是看下BDB的安装了,验证可用。LINUX+APACHE+PHP+BDB+OPENLDAP+PHPLDAPADMIN安装配置  LINUX下安装openldap,并用phpldapadmin进行管...
  • Destina
  • Destina
  • 2011年02月16日 21:02
  • 4237

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

LDAP服务器搭建、openssl证书生成、openldap服务器配置启动,java使用ssl连接到LDAP服务器...

PHP操作证书

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

openldap for linux 操作文档

  • 2010年11月23日 14:42
  • 2.41MB
  • 下载

java操作openldap代码

  • 2013年07月11日 17:07
  • 13KB
  • 下载

C语言操作OpenLDAP

参考:http://www.cnblogs.com/zhumao/archive/2005/08/13/214258.html 步骤: 包括openldap,netscape(sun),mozill...
  • bytxl
  • bytxl
  • 2013年10月10日 15:21
  • 1247

CentOS7.x下安装Nginx、PHP及生成自签名证书、开启http2(下)

说明:本篇博客紧接着上一篇博客(CentOS7.x下安装Nginx、PHP及生成自签名证书、开启http2(下)),在安装及配置好Nginx及PHP后,本篇博客重点在于使用openssl生成自签名证书...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:openldap安装以及存取读取证书操作(PHP)
举报原因:
原因补充:

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