配置openldap使用SSL连接

前端之家收集整理的这篇文章主要介绍了配置openldap使用SSL连接前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设openldap服务器已经配置好,可以正常工作。下面的步骤只是让openldap使用ssl连接。
这篇文档参考了http://www.openldap.org/pub/ksoper/OpenLDAP_TLS.html,那里有更详尽的介绍。
注:此配置在fc5下面通过。rhe系列会有不一样的地方。

0在开始之前,
0.1建议备份/etc/openldap/slapd.conf,/etc/openldap/ldap.conf
0.2安装软件包openssl,openssl-perl.后者是用来创建CA认证的一个perl脚本包。
1创建证书(certificate)
这一步分为3个步骤,首先把CA建立起来,然后让此CA签发一个server的证书和一个client的证书。
需要特别注意的是创建证书时,输入CommonName的时候一定要输入目标机器的fullyqualifiedname
1.1创建CA
这里关系到两个目录,/etc/pki/tls/misc是工作目录,/etc/pki/CA是存放所有CA相关文件的目录。
完成此步骤后,会在/etc/pki/CA目录下生成一系列文件,其中最重要的是
/etc/pki/CA/cakey.pemCA的私钥文件
/etc/pki/CA/cacert.pemCA的证书文件
tips:如果脚本检测到/etc/pki/CA下面有文件存在,那么script会安静的退出,不会创建任何东西。
把/etc/pki/CA下的文件全部删除,script就可以正常工作了
>cd/etc/pki/tls/misc
>./CA.pl-newca

..........忽略部分信息........
writingnewprivatekeyto'../../CA/private/cakey.pem'
EnterPEMpassphrase:<password>
Verifying-EnterPEMpassphrase:<password>
-----
Youareabouttobeaskedtoenterinformationthatwillbeincorporated
intoyourcertificaterequest.
WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN.
Therearequiteafewfieldsbutyoucanleavesomeblank
Forsomefieldstherewillbeadefaultvalue,
Ifyouenter'.',thefieldwillbeleftblank.
CountryName(2lettercode)[GB]:<CN>
StateorProvinceName(fullname)[Berkshire]:<shanghai>
LocalityName(eg,city)[Newbury]:<shanghai>
OrganizationName(eg,company)[MyCompanyLtd]:<foo>
OrganizationalUnitName(eg,section)[]:<bar>
CommonName(eg,yournameoryourserver'shostname)[]:<myca.foo.com>!!!!fullqualifiedname!!!
EmailAddress[]:<[email]someone@foo.com[/email]>
Pleaseenterthefollowing'extra'attributes
tobesentwithyourcertificaterequest
Achallengepassword[]:
Anoptionalcompanyname[]:
Usingconfigurationfrom/etc/pki/tls/openssl.cnf
Enterpassphrasefor../../CA/private/cakey.pem:<rain>
Checkthattherequestmatchesthesignature
Signatureok
1.2创建server的证书
下面我们要创建ldapserver的证书。分为两步,第一步是生成一个创建证书的请求,第二步是让CA为此请求签发证书
>./CA.pl-newreq-nodes
Generatinga1024bitRSAprivatekey
............++++++
.......++++++
writingnewprivatekeyto'newkey.pem'
StateorProvinceName(fullname)[Berkshire]:<Shanghai>

Requestisinnewreq.pem,privatekeyisinnewkey.pem
>./CA.pl-sign
Enterpassphrasefor../../CA/private/cakey.pem:<password>
CertificateDetails:
.....省略部分内容......
CertificateistobecertifieduntilApr1622:37:142008GMT(365days)
Signthecertificate?[y/n]:y
1outof1certificaterequestscertified,commit?[y/n]y
Writeoutdatabasewith1newentries
DataBaseUpdated
Signedcertificateisinnewcert.pem
运行完两个步骤后,你会发现当前目录下创建了3个文件:
newreq.pem创建证书请求文件,没什么用了
newcert.pemCA签发的证书
newkey.pem证书对应的私钥
首先我们重命名证书文件和私钥文件
mvnewcert.pemserver.cert
mvnewkey.pemserver.key
然后给他们设置合适的权限,特别是私钥文件,一定要只有owner能读。否则ssl安全体系形同虚设!
chmod644server.cert
chmod600server.key(Nobodycanreaditexceptowner!!)
最后一步是把这两个文件和CA的证书文件拷贝到openldap存放证书的目录下,一般在/etc/openldap/cacerts
如果CA和ldapserver不在同一个机器上,那么用scp拷贝即可。这里假设他们在同一台机器上
mvserver.cert/etc/openldap/cacerts
mvserve.key/etc/openldap/cacerts
cp../../CA/cacert.pem/etc/openldap/cacerts
1.3创建client的证书
创建client的证书和上面创建server的证书类似。不过要注意的是
1)在输入CommonName的时候一定要输入clien的fullyqualifiedname!!
2)证书文件和私钥文件可以命名为client.cert,client.key,它们和cacert.pem也拷贝到client端的/etc/openldap/cacerts
2配置server
>serviceldapstop#首先停掉openldapserver.
>vi/etc/openldap/slapd.conf
加入下面4行
TLSCACertificateFile/etc/openldap/cacerts/cacert.pem#配置CA证书的路径
TLSCertificateFile/etc/openldap/cacerts/server.cert#配置server证书的路径
TLSCertificateKeyFile/etc/openldap/cacerts/server.key#配置server私钥的路径
TLSVerifyClientnever
#设置是否验证client的身份,其值可以是never/allow/try/demand
#配置什么值取决于你的安全策略。仅仅就配置来说,
#如果不需要认证client端的身份,那么client只需要有CA的证书就可以了
#如果需要认证client端的身份,那么client还必须要有它自己的证书\
#我们首先介绍"never"的情况下client的配置,然后介绍"demand"的情况下client的配置
sslstart_tls
#如果client端使用TLS协议连接,那么加上这一行。否则TLS连接会失败
#加上这一行后,bothSSLandTLScanbesupportedbythisldapserver.
3配置client
3.1首先我们假设ldapserver不需要验证client的身份
也就是在/etc/openldap/slapd.con里,TLSVerifyClient设置为never。
>vi/etc/openldap/ldap.conf
需要加入或修改下面的内容
URIldaps://ldapserver.foo.com#一定要和server的证书里输入的fullqualifiedname一样
TLS_CACERT/etc/openldap/cacerts/cacert.pem#CA的证书
TLS_REQCERTdemand#client总是要求认证server端
>serviceldaprestart
>ldapsearch-x
如果有正确的输入,就表示配置成功了。
3.2如果ldapserver需要验证client的身份
也就是在/etc/openldap/slapd.conf里,TLSVerifyClient设置为demand。这种情况下,client需要有自己的证书和私钥。
配置clieng的证书和私钥只能在用户home目录下的ldaprc文件里。
>vi~/ldaprc
加入下面的内容
TLS_REQCERTdemand
TLS_CERT/etc/openldap/cacerts/client.cert
TLS_KEY/etc/openldap/cacerts/client.key
注意此用户对/etc/openldap/cacerts/client.key要有可读的权限!!
4调试方法
4.1在调试模式启动slapd
>slapd-d127-h"ldap:///ldaps:///"
-d127是指定调试级别。slapd会在当前console启动,所有的连接信息都会在屏幕上打印出来。
4.2用opensslclient连接ssl服务器
4.2.1对于不需要client验证的情况
>openssls_client-connectldapserver.foo.com:636-showcerts-state-CAfile/etc/openldap/cacerts/cacert.pem
file/etc/openldap/cacerts/cacert.pem
CONNECTED(00000003)
SSL_connect:before/connectinitialization
SSL_connect:SSLv2/v3writeclienthelloA
SSL_connect:SSLv3readserverhelloA
depth=1/C=CN/ST=shanghai/O=dean/OU=mobile/CN=fedora.dean.com/emailAddress=ss@ss.com
verifyreturn:1
depth=0/C=CN/ST=Shanga/L=shanghai/O=dean/OU=home/CN=fedora.dean.com/emailAddress=sdf@ss.com
SSL_connect:SSLv3readservercertificateA
SSL_connect:SSLv3readserverdoneA
SSL_connect:SSLv3writeclientkeyexchangeA
SSL_connect:SSLv3writechangecipherspecA
.......省略了部分内容.......
Compression:NONE
Expansion:NONE
SSL-Session:
Protocol:TLSv1
Cipher:AES256-SHA
Session-ID:03FDE102050C7828C39E03D7A3F526E6E9D256115A0ADF7793538B616C5548ED
Session-ID-ctx:
Master-Key:07A62B4E5060BF4542E49DC33C2C6D6F10FF266F48856A780187C759A3007CF2F18ECAB49DBA8915394D52179AC8FE9B
Key-Arg:None
Krb5Principal:None
StartTime:1198247985
Timeout:300(sec)
Verifyreturncode:0(ok)
---
用"CTRL-C"退出
4.2.2对于需要clien验证的情况
>openssls_client-connectldapserver.foo.com:636-showcerts-state\
-CAfile/etc/openldap/cacerts/cacert.pem
-cert/etc/openldap/cacerts/client.cert
-key/etc/openldap/cacerts/client.key

猜你在找的Bash相关文章