配置openldap使用SSL连接
发布时间:2020-12-15 16:25:06 所属栏目:安全 来源:网络整理
导读:假设openldap服务器已经配置好,可以正常工作。下面的步骤只是让openldap使用ssl连接。 这篇文档参考了http://www.openldap.org/pub/ksoper/OpenLDAP_TLS.html,那里有更详尽的介绍。 注:此配置在fc5下面通过。rhe系列会有不一样的地方。 0在开始之前, 0.1
假设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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |