Linux ,c/c++, web,前端,php,js
分类:
2011-08-11 18:30:49
默认情况下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证书,在客户端合并证书即可。