随笔-124  评论-194  文章-0  trackbacks-0

基本概念
LDAP是以树方式组织的数据库。每个节点可以有什么值是通过类来定义。
LINUX或者其它应用的认证就是来BIND LDAP树上的节点,如果能够BIND,就算认证成功。
要改变LINUX认证方式,需要让名字服务NSCD能够到LDAP查找用户,这需要nss_ldap.so。
得到用户后,再到LDAP去认证,这需要pam_ldap.so实现。

公私钥:公钥可以唯一解密私钥加密过的数据,反之亦然。
SSL过程:需要两对公私钥(P1,V1),(P2,V2),假设通信双方是A和B,B是服务器,A要确认和它通信的是B:
A->B: hello
B->A: 用V2加密过的P1(即用户证书,A就用P2解密出P1)
A->B: ok
B->A: 用V1加密的一段信息
A->B: 用P1加密一个自动生成的K(用之前的P1解密成功这段信息则认为B是可信的了)
B->A: 用K加密的数据(之后两对密钥功能结束,由K来加解密数据)
这里,P2就是第3方的CA证书,由于非对称加密很慢,所以公私钥只是用来保证K的传送安全,之后通信是用K的对称加密算法来保证。


需要安装的组件
Berkeley DB 4.2.52 or later - http://www.sleepycat.com/(仅服务端)
NSS_LDAP 2.2.X or PAM_LDAP 1.6.X or later – http://www.padl.com/(仅客户端)
OpenSSL 0.9.7e or later – http://www.openssl.org/

OpenLDAP 2.3.XX or later - http://www.openldap.org/(仅服务端)

OpenSSH: http://www.openssh.org/

# cd /var/tmp
# tar xvf openssh-
3 .X.XpX.tar
# cd openssh-
3 .X.XpX
# ./configure --prefix
= /usr --with-pam --sysconfdir = /etc/ssh --with-ssl-dir = /usr



需要修改的文件
服务器端:
/etc/openldap/slapd.conf

include   /etc/openldap/schema/core.schema
include   /etc/openldap/schema/cosine.schema
include   /etc/openldap/schema/inetorgperson.schema
include   /etc/openldap/schema/nis.schema


loglevel -
1

access to attrs
= shadowLastChange , userPassword
      by self write
      by * auth

access to *
      by * read

TLSCipherSuite  HIGH:MEDIUM:+SSLv2
TLSCACertificateFile /etc/openldap/cacert.pem
TLSCertificateFile /etc/openldap/slapd-cert-ldap1.pem
TLSCertificateKeyFile /etc/openldap/slapd-key-ldap1.pem

TLSVerifyClient never 

database    bdb
suffix        
" dc=example,dc=com "
rootdn        
" cn=Manager,dc=example,dc=com "
rootpw        secret
directory               /var/lib/ldap
index    objectClass    eq


客户端:
/etc/ldap.conf

host ldap1.example.com
base dc
= example , dc = com
ssl start_tls
tls_cacertfile /tmp/cacert.pem

      /etc/pam.d/system-auth

/etc/sysconfig/authconfig

USEDB = no
USEHESIOD
= no
USELDAP
= yes
USENIS
= no
USEKERBEROS
= no
USELDAPAUTH
= yes
USEMD5
= yes
USESHADOW
= yes
USESMBAUTH
= no


/etc/nsswitch.conf


/etc/hosts

127.0.0.1        MD_Mother_HDA localhost
10.56.28.33      ldap1.example.com

/etc/ssh/sshd_config

PasswordAuthentication yes

ChallengeResponseAuthentication yes

UsePAM yes

Subsystem       sftp    /usr/libexec/sftp-server



需要重启的服务
service nscd restart       
service sshd restart

另外,这个文件是LDAP命令使用的,不是系统认证所需:
/etc/openldap/ldap.conf

开始的时候可以不要SSL认证,只需要注释掉ldap.conf中start_tls一句即可。另外,SSL要求验证服务器,所以一定要在/etc/hosts文件里加入服务器完整名字,并与SSL证书中一致。

posted on 2006-11-28 15:56 我爱佳娃 阅读(7338) 评论(5)  编辑  收藏 所属分类: 服务配置

评论:
# re: LDAP+OpenSSL集中认证配置 2007-03-30 18:00 | 我爱佳娃
如果设置了不存在的IP为LDAPSVR,会使客户端认证很慢。改配置也没用。但只要能PING通的,即使没装也会正常了。  回复  更多评论
  
# re: LDAP+OpenSSL集中认证配置 2008-01-08 19:43 | ykzj
公私钥:公钥可以唯一解密私钥加密过的数据,反之亦然。
SSL过程:需要两对公私钥(P1,V1),(P2,V2),假设通信双方是A和B,B是服务器,A要确认和它通信的是B:
A->B: hello
B->A: 用V2加密过的P1(即用户证书,A就用P2解密出P1)
A->B: ok
B->A: 用V1加密的一段信息
^^^^^^^^^^^^^^^^^^^^B有A的私钥?


A->B: 用P1加密一个自动生成的K(用之前的P1解密成功这段信息则认为B是可信的了)
B->A: 用K加密的数据(之后两对密钥功能结束,由K来加解密数据)
这里,P2就是第3方的CA证书,由于非对称加密很慢,所以公私钥只是用来保证K的传送安全,之后通信是用K的对称加密算法来保证。  回复  更多评论
  
# re: LDAP+OpenSSL集中认证配置 2008-01-09 20:21 | 我爱佳娃
你理解反了,这是是A要确认通信方是B,做个类比,B就相当于银行,A就是客户端,A一定要确认B是真正的银行才能发送自己的用户名和密码。

B->A: 用V1加密的一段信息
V1是B的私钥,它用V1加密一段信息给A,A用之前的P1一解,能解开那就确定是B无疑了(因为公钥可以唯一解密私钥加密过的数据)。A是没有任何私钥的,它唯一要有的就是CA证书,即P2。  回复  更多评论
  
# re: LDAP+OpenSSL集中认证配置 2008-10-20 14:42 | kudiejlq
对以下内容的疑问:

SSL过程:需要两对公私钥(P1,V1),(P2,V2),假设通信双方是A和B,B是服务器,A要确认和它通信的是B:
A->B: hello
B->A: 用V2加密过的P1(即用户证书,A就用P2解密出P1)
.......

第二步,即B->A这一步,感觉这里有些问题。v2是CA的私钥,如果p1是经由v2加过密的,那么考虑一种这样的情况:客户浏览器中没有此CA的根证书,即没有p2会怎么样? 它根本就不能解密出p1, 也无从知道是哪个ca颁布的证书。即使有该CA的根证书,在不知道P1的内容前,它怎么知道用这个P2(而不是P3或者P4)去解密出P1?所以,我认为CA没有加密P1,只是用V2对P1进行了签名。

期待继续讨论:kudiejlq@126.com
  回复  更多评论
  
# re: LDAP+OpenSSL集中认证配置 2008-10-27 17:16 | 我爱佳娃
你浏览SSL认证的网页时,如果事先没有安装证书P2,浏览器会下载,并弹出对话框问你是否信任此证书的。
而如果你访问银行服务,它会事先给你一个号码或者导入证书。
V2对P1所谓的签名,就是执行了加密,保证只有P2能够解出来,这是公私匙存在的基础:公钥可以唯一解密私钥加密过的数据,反之亦然。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: