简介:
本篇是FreeBSD下安装OpenLDAP (http://www.donews.net/heromyth/archive/2004/10/24/146690.aspx)的续篇,主要讲如何安全使用OpenLDAP。
一、使用访问控制(Access Control),实现用户认证
关于它,在OpenLDAP 2.1 Administrator's Guide里有详细说明。这里只管应用。
修改OpenLDAP的配置文件,增加控制块
access to *
by self write
by users read
查询测试
1、如果还使用LDAP Browser 2.6的话,这次就可以使用其它的用户bind了,如使用用户:
uid=abc,ou=people,dc=example,dc=com
它的密码是:abcabc(见前面的例子)
2、在命令行完成
匿名查询结果:(显然没有任何条目)
# search result
search: 2
result: 0 Success
# numResponses: 1
# ldapsearch -x -b 'dc=example,dc=com' -D 'uid=abc,ou=people,dc=example,dc=com' -w abcabc 'uid=a*'
# abc, people, example.com
dn: uid=abc,ou=people,dc=example,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: abc
sn: zhangs
cn: zs
userPassword:: YWJjYWJj
# aaa, people, example.com
dn: uid=aaa,ou=people,dc=example,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: aaa
sn: aaaa
cn:: YWFkQSA=
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
二、使用SSL/TLS
通过认证授权(Certificate Authority)中心发行的证书签发证书或自签发证书,这里用的是自签发证书。
参考:http://www.openldap.org/pub/ksoper/OpenLDAP_TLS_howto.html
http://www.openldap.org/faq/data/cache/185.html
(一)服务端的证书
1、建立一临时目录
如果不输入文件名,则会在当前目录下会生成demoCA目录,里边存放有cacert.pem 和private/cakey.pem (CA证书和RSA私有密钥)。在填写各项目的过程上,有些项目不是很重要,对于“Common Name”,应该填入有一定意义易于阅读的字符串,不一定是服务器的名字,我的就是abc.cn,而服务器名字为myth.unix.cn。
其实,它是一个自签署证书,此时CA已进行了自签署,而形成了根证书。其中依然有公钥和私钥。公钥可以发布,用于确认服务器证书的合法性。
2、建立服务器的“证书签署请求(certificate signing request - CSR)”,即签署请求证书
同时也将它做为服务器的私有密钥
其它没什么,对于“Common Name”则一定要小心,此处应该填入服务器的FQDN(fully-qualified distinguished name),即运行OpenLDAP的服务器的完整名称,而不是一般的简写名称。如果你的服务器有多个名称,就先把主名填入这里,而对于其它的别名,则可以利用openssl.cnf文件里的subjectAltName。例如:
subjectAltName=DNS:alias1.domain1,DNS:host2.domain2,DNS:*.domain3
关于FQDN,对于unix或linux的用户来说应该不陌生,实际上在你安装系统时,配置IP地址那个地方就已经进行FQDN的设定。现在想知道你的服务器的FQDN的方法,可以通过执行
我的自己的名字就是:myth.unix.cn。据说90%的错误都出在这里。
查看newreq.pem的内容:
3、使用前面的CA证书签署CSR,得到签署后的证书,可以发布
此证书也称为服务器证书,里面主要包含了证书的签署机构、服务器的公钥以及服务器的全域名(FQDN)等等。其有效性可以通过使用CA证书的公钥,即demoCA/cacert.pem来进行确认。主要用于对此服务器的验证。
注意,不要出错,尤其是密码不要错了。除此以外,另外还有两次确认选项。
Certificate is to be certified until Nov 18 17:11:48 2005 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=CN, ST=Some-State, O=Internet Widgits Pty Ltd, CN=abc.cn
Validity
Not Before: Nov 18 17:11:48 2004 GMT
Not After : Nov 18 17:11:48 2005 GMT
Subject: C=CN, ST=Some-State, O=Internet Widgits Pty Ltd, CN=myth.unix.cn
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:b7:7a:49:0f:53:53:b2:d0:c3:38:c5:fc:ba:1b:
db:69:56:a6:e2:20:e8:f9:48:77:f1:95:c9:0b:f3:
8d:0d:d6:43:7b:de:c2:82:88:58:7c:8a:0f:59:0e:
00:46:4e:b1:ff:03:e4:49:39:1a:33:6d:94:b4:e8:
36:e6:99:63:2a:16:21:7a:21:be:4e:92:08:92:35:
d6:59:cd:39:9b:bc:0d:6e:31:7a:1b:e1:50:c3:e2:
62:e0:99:1c:25:78:22:fa:e4:26:1b:b6:0c:71:0c:
52:99:64:81:03:77:56:ec:8c:7e:3d:0a:ca:4e:9c:
82:a9:55:5d:9d:75:64:f1:9d
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
EC:5A:A3:89:D0:24:7F:83:70:25:E6:A6:CA:D8:35:09:5A:65:70:E3
X509v3 Authority Key Identifier:
keyid:4E:A0:2B:E4:B2:BB:01:9B:5D:12:7D:90:79:40:22:36:8B:29:28:AC
DirName:/C=CN/ST=Some-State/O=Internet Widgits Pty Ltd/CN=abc.cn
serial:00
Signature Algorithm: md5WithRSAEncryption
67:bf:f5:2e:6b:7e:e1:53:48:56:4e:91:30:87:38:57:ff:23:
c3:b3:71:ed:fd:d7:bd:7c:22:8b:76:9a:0e:c0:e6:4d:19:91:
86:d3:af:ce:08:b2:01:ba:df:f6:d3:8c:3a:11:f6:10:f6:09:
3d:be:61:e2:39:77:5b:d2:1b:a7:bb:fb:a4:37:bf:79:54:ad:
82:9e:dc:c8:85:a6:39:4b:b9:d1:02:16:f5:4f:6f:30:4a:02:
96:8e:0b:06:85:da:5e:3b:00:af:1a:b1:fb:31:55:69:6c:21:
e3:4a:d8:17:3d:92:69:12:d6:c7:40:58:8b:8b:ba:77:73:31:
58:41
-----BEGIN CERTIFICATE-----
MIIDBDCCAm2gAwIBAgIBATANBgkqhkiG9w0BAQQFADBWMQswCQYDVQQGEwJDTjET
.......
i4u6d3MxWEE=
-----END CERTIFICATE-----
Signed certificate is in newcert.pem
4、将这些证书移动到一个指定的地方
5、修改OpenLDAP服务器配置
增加如下内容:
修改相关内容为:
6、重启OpenLDAP服务器
此时服务器应该就可以使用了。下面是对客户端的配置
(二)客户端的证书
建立客户端证书与建立服务器端的证书过程方法基本一样。再次提醒关于"Common Name",应该根据客户端的情况来填入FQDN。关于客户端的CA证书应该有很多,因为它可能要连接多个LDAP服务器,而每一个服务器都会有一个CA证书。这里就要使用先前建立的那个CA证书。
1、获得LDAP服务端的CA证书。这里直接使用了LDAP的CA证书。
2、生成客户端的CSR,得到newreq.pem
提示:这里对“Common Name”的要求不是那么,即不一定是客端的名字
3、使用服务端的CA证书签署刚才的CSR,得到newcrt.pem
4、复制newreq.pem和newcrt.pem到一个指定的地方
修改相关内容为:
TLS_CACERT /usr/local/etc/openldap/cacert.pem
TLS_REQCERT demand
针对特定的登录用户进行设定,利用.ldaprc文件加载公钥和私钥:
类似TLS_CERT和TLS_KEY等user-only类型的选项,只能用于此文件中。
TLS_CERT /usr/local/etc/openldap/client.cert.pem
TLS_KEY /usr/local/etc/openldap/client.key.pem
注意:.ldaprc使用户可以根据自己的需要来设定选项的值,如果设定了全局选项的值,则它会自动重载ldap.conf里的相应选项。
(三)查询测试
1、使用openssl连接测试
注意:TLSVerifyClient选项若不为demand,则使用
若为demand,则使用
2、使用ldapsearch测试
对于OpenLDAP 2.2 来说"-ZZ"好象已不太重要。
总结
实际上,OpenLDAP也支持中文,甚至连象uid这样的标识的值都可以为中文,其它属性的值当然也可以为中文了。不过直接导入中文是不行的,必须将中文编码为utf-8这一类的字符集。经过实践,只认识到这么多的内容。感兴趣的朋友可以一起讨论。
参考:
用OpenLdap建立网络数据库 http://www.chinalinuxpub.com/read.htm?id=1159
LDAPman RFC page http://www.ldapman.org/ldap_rfcs.html
SSL技术专题 http://www.chinaitlab.com/www/special/ssl.asp
OpenSSL Certificate Cookbook http://www.pseudonym.org/ssl/ssl_cook.html
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |