Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1728004
  • 博文数量: 782
  • 博客积分: 2455
  • 博客等级: 大尉
  • 技术积分: 4140
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-06 21:37
个人简介

Linux ,c/c++, web,前端,php,js

文章分类

全部博文(782)

文章存档

2015年(8)

2014年(28)

2013年(110)

2012年(307)

2011年(329)

分类:

2011-08-11 18:30:49

使用openldap 对LINUX 用户集中式管理已经1年多了,可是master/slave 与client 通讯一直以明文方式进行,最近两天终于把 master/slave 与client 通讯 修改为ssl加密方式通讯了。哎,不容易啊!

      默认情况下openldap 与 客户端之间通讯是明文通讯,可以使用 tls/ssl 对通讯加密。当有客户端向(636)这个端口发起连接时,双方首先要进行安全连接的初始化和协商,通常需要服务器端向客户端提供自己的证书,客户端解签名 确认服务器端身份的真实性。这需要PKI公钥基础结构的支持。在我们企业的局域网中可以使用openssl软件包来创建一个根CA认证服务器,由根CA向 自己颁发LDAP服务的使用证书。公钥包含在证书之中,其中包括了服务器完整域名(FQDN)名。在LDAP服务的客户端存放一张根CA的证书,并且用这 一张授权证书去检测LDAP服务器证书的有效性和真实性。
    一、CA证书的创建

     创建CA证书的工具有openssl提供两个脚本,一个是shell CA ,一个是perl的CA.pl,下面才是perl 脚本创建CA证书
     yum install openssl-perl
     cd /etc/pki/tls/mics
     rm -rf ../../CA
     vi ../openssl.cnf
     修改一下选项:
     countryName                     = CN
     countryName_default             = CN
     stateOrProvinceName             = nessus
     stateOrProvinceName_default     = nessus
     localityName                    = GD
     localityName_default            = GD

     0.organizationName              = nessus
     0.organizationName_default      = nessus


     organizationalUnitName          = IT
     organizationalUnitName_default  = IT
      
      default_days    = 3650  ##证书有效时间,我修改为10年,默认为1年  

保存。
    创建CA证书:
     ./CA.pl -newca         ###建立证书机构
     创建过程中其他信息已经在编辑openssl.conf 时写进去了,commonName一定要输入机器名称或者是IP地址,否则客户端无法验证。然后输入邮件地址,创建完成。
     ./CA.pl -newreq-nodes  ###生成公钥
     ./CA.pl -sign          ###生成私钥
     mv newcert.pem server.cert
     mv newkey.pem server.key
     mv server.* /etc/openldap/cacerts/
     cp ../../CA/cacert.pem /etc/openldap/cacerts
  二、修改openldap-server 配置
     vi /etc/openldap/sldap.conf
         添加下面选项:
         TLSCACertificateFile /etc/openldap/cacerts/cacert.pem # 配置CA证书的路径
         TLSCertificateFile /etc/openldap/cacerts/server.cert # 配置server证书的路径
         TLSCertificateKeyFile /etc/openldap/cacerts/server.key # 配置server私钥的路径
         TLSVerifyClient never  ####只要求客户端提供CA证书

        /etc/init.d/ldap restart
        ps aux|grep ldap
        ldap     13812  1.6  0.1 625872 10012 ?        Ssl  11:08   4:00 /usr/sbin/slapd -h ldap:/// ldaps:/// -u ldap
       ldaps 服务已经启动。
       LDAPS 服务已经启动,netstat -lntup|grep 636 查看端口看是否启动。
 三、客户端配置


        拷贝 openldap server 的/etc/openldap/cacerts/cacert.pem 证书到 客户端  /etc/openldap/cacerts 目录下
        vi /etc/ldap.conf
         uri ldaps://192.168.0.194/ ldaps://192.168.0.142/
         ssl start_tls ###这个选项与 ssl on 的顺序不能够颠倒,否则认证无法通过
         ssl on
         tls_checkpeer no  
         TLS_CACERTDIR  /etc/openldap/cacerts
         tls_cacert /etc/openldap/cacerts/cacert.cert
         TLS_REQCERT deman  ####客户端总是要求认证server端

 四、其他问题


       如果openldap 采用了Master/slave 是,上面方式只能保障master采用ssl 加密方式,slave 与client还是以明文方式通讯,以同样的方式方式创建CA证书,在客户端合并证书即可。

阅读(489) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~