配置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的证书。
需要特别注意的是创建证书时,输入Common Name的时候一定要输入目标机器的fully qualified name
1.1 创建CA
这里关系到两个目录,/etc/pki/tls/misc是工作目录,/etc/pki/CA是存放所有CA相关文件的目录。
完成此步骤后,会在/etc/pki/CA目录下生成一系列文件,其中最重要的是
/etc/pki/CA/cakey.pem CA的私钥文件
/etc/pki/CA/cacert.pem CA的证书文件
tips:如果脚本检测到/etc/pki/CA下面有文件存在,那么script会安静的退出,不会创建任何东西。
把/etc/pki/CA下的文件全部删除,script就可以正常工作了
> cd /etc/pki/tls/misc
> ./CA.pl -newca
..........忽略部分信息........
writing new private key to '../../CA/private/cakey.pem'
Enter PEM pass phrase: <password>
Verifying - Enter PEM pass phrase: <password>
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]: <CN>
State or Province Name (full name) [Berkshire]:<shanghai>
Locality Name (eg, city) [Newbury]:<shanghai>
Organization Name (eg, company) [My Company Ltd]:<foo>
Organizational Unit Name (eg, section) []:<bar>
Common Name (eg, your name or your server's hostname) []:<myca.foo.com> !!!!full qualified name!!!
Email Address []: <[email]someone@foo.com[/email]>
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for ../../CA/private/cakey.pem:<rain>
Check that the request matches the signature
Signature ok
..........忽略部分信息........
1.2 创建server的证书
下面我们要创建ldap server的证书。分为两步,第一步是生成一个创建证书的请求,第二步是让CA为此请求签发证书
> ./CA.pl -newreq-nodes
Generating a 1024 bit RSA private key
............++++++
.......++++++
writing new private key to 'newkey.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:<CN>
State or Province Name (full name) [Berkshire]:<Shanghai>
Locality Name (eg, city) [Newbury]:<Shanghai>
Organization Name (eg, company) [My Company Ltd]:<foo>
Organizational Unit Name (eg, section) []:<bar>
Common Name (eg, your name or your server's hostname) []:<ldapserver.foo.com> !!!!full qualified name!!!
Email Address []:<[email]someone@foo.com[/email]>
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Request is in newreq.pem, private key is in newkey.pem
> ./CA.pl -sign
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for ../../CA/private/cakey.pem: <password>
Check that the request matches the signature
Signature ok
Certificate Details:
.....省略部分内容......
Certificate is to be certified until Apr 16 22:37:14 2008 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
Signed certificate is in newcert.pem
运行完两个步骤后,你会发现当前目录下创建了3个文件:
newreq.pem 创建证书请求文件,没什么用了
newcert.pem CA签发的证书
newkey.pem 证书对应的私钥
首先我们重命名证书文件和私钥文件
mv newcert.pem server.cert
mv newkey.pem server.key
然后给他们设置合适的权限,特别是私钥文件,一定要只有owner能读。否则ssl安全体系形同虚设!
chmod 644 server.cert
chmod 600 server.key (Nobody can read it except owner!!)
最后一步是把这两个文件和CA的证书文件拷贝到openldap存放证书的目录下,一般在/etc/openldap/cacerts
如果CA和ldap server不在同一个机器上,那么用scp拷贝即可。这里假设他们在同一台机器上
mv server.cert /etc/openldap/cacerts
mv serve.key /etc/openldap/cacerts
cp ../../CA/cacert.pem /etc/openldap/cacerts
1.3 创建client的证书
创建client的证书和上面创建server的证书类似。不过要注意的是
1)在输入Common Name的时候一定要输入clien的fully qualified name!!
2)证书文件和私钥文件可以命名为client.cert, client.key,它们和cacert.pem也拷贝到client端的/etc/openldap/cacerts
2 配置server
> service ldap stop # 首先停掉openldap server.
> 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私钥的路径
TLSVerifyClient never
# 设置是否验证client的身份,其值可以是never/allow/try/demand
# 配置什么值取决于你的安全策略。仅仅就配置来说,
# 如果不需要认证client端的身份,那么client只需要有CA的证书就可以了
# 如果需要认证client端的身份,那么client 还 必须要有它自己的证书\
# 我们首先介绍"never"的情况下client的配置,然后介绍"demand"的情况下client的配置
ssl start_tls
# 如果client端使用TLS协议连接,那么加上这一行。否则TLS连接会失败
# 加上这一行后,both SSL and TLS can be supported by this ldap server.
3 配置client
3.1 首先我们假设ldap server不需要验证client的身份
也就是在/etc/openldap/slapd.con里,TLSVerifyClient 设置为never。
>vi /etc/openldap/ldap.conf
需要加入或修改下面的内容
URI ldaps://ldapserver.foo.com # 一定要和server的证书里输入的full qualified name一样
TLS_CACERT /etc/openldap/cacerts/cacert.pem # CA的证书
TLS_REQCERT demand # client总是要求认证server端
> service ldap restart
> ldapsearch -x
如果有正确的输入,就表示配置成功了。
3.2 如果ldap server需要验证client的身份
也就是在/etc/openldap/slapd.conf里,TLSVerifyClient设置为demand。这种情况下,client需要有自己的证书和私钥。
配置clieng的证书和私钥只能在用户home目录下的ldaprc文件里。
> vi ~/ldaprc
加入下面的内容
TLS_REQCERT demand
TLS_CERT /etc/openldap/cacerts/client.cert
TLS_KEY /etc/openldap/cacerts/client.key
注意此用户对/etc/openldap/cacerts/client.key要有可读的权限!!
> service ldap restart
> ldapsearch -x
如果有正确的输入,就表示配置成功了。
4 调试方法
4.1 在调试模式启动slapd
> slapd -d127 -h "ldap:/// ldaps:///"
-d127是指定调试级别。slapd会在当前console启动,所有的连接信息都会在屏幕上打印出来。
4.2 用openssl client连接ssl 服务器
4.2.1 对于不需要client验证的情况
> openssl s_client -connect ldapserver.foo.com:636 -showcerts -state -CAfile /etc/openldap/cacerts/cacert.pem
file /etc/openldap/cacerts/cacert.pem
CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=1 /C=CN/ST=shanghai/O=dean/OU=mobile/CN=fedora.dean.com/emailAddress=ss@ss.com
verify return:1
depth=0 /C=CN/ST=Shanga/L=shanghai/O=dean/OU=home/CN=fedora.dean.com/emailAddress=sdf@ss.com
verify return:1
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
.......省略了部分内容.......
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : AES256-SHA
Session-ID: 03FDE102050C7828C39E03D7A3F526E6E9D256115A0ADF7793538B616C5548ED
Session-ID-ctx:
Master-Key: 07A62B4E5060BF4542E49DC33C2C6D6F10FF266F48856A780187C759A3007CF2F18ECAB49DBA8915394D52179AC8FE9B
Key-Arg : None
Krb5 Principal: None
Start Time: 1198247985
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
用"CTRL-C" 退出
4.2.2 对于需要clien验证的情况
> openssl s_client -connect ldapserver.foo.com:636 -showcerts -state \
-CAfile /etc/openldap/cacerts/cacert.pem
-cert /etc/openldap/cacerts/client.cert
-key /etc/openldap/cacerts/client.key
配置openldap使用SSL连接相关推荐
- Redis SSL/TLS配置以及Jedis SSL连接
Redis 6.2X SSL/TLS加密配置研究(主从.集群.压测) 最近因工作需要配置Redis 6.2X版本的SSL/TLS加密网上资料比较少,并且多是直接客户端和服务端直接连接,并未说明主从 ...
- MySQL配置SSL访问-配置 MySQL 使用加密连接
配置 MySQL 使用加密连接 通过 MySQL 客户端和服务器之间的未加密连接,可以访问网络的人可以监视您的所有流量并检查客户端和服务器之间发送或接收的数据. 当您必须以安全的方式通过网络移动信息时 ...
- ecmall php传变量,PHP_ECMall支持SSL连接邮件服务器的配置方法详解,首先,主要是ecmall使用的phpmail - phpStudy...
ECMall支持SSL连接邮件服务器的配置方法详解 首先,主要是ecmall使用的phpmailer版本太低,不支持加密连接. 然后,得对相应代码做一定调整. 1. 覆盖phpmailer 请从附件进 ...
- MySQL的 SSL 连接配置
MySQL的 SSL 连接配置 1.#创建 CA 私钥和 CA 证书 /etc/mysqlCert 生成一个 CA 私钥 openssl genrsa 2048 > ca-key.pem 生成一 ...
- mysql ssl 连接配置与Java连接配置全教程
目录 开篇 开发环境 正文 安装OpenSSL 开启远程连接支持 查看是否支持SSL 创建SSL证书和私钥 创建存放证书和私钥的目录 生成证书和私钥 mysql的SSL开启与证书配置 本地ssl登陆 ...
- DB2配置SSL连接(只是连接通道加密,非免密)
简单步骤,没太多说明 vim /etc/services 添加SSL连接通道端口,我给原来的50000中间加443 db2cs_db2inst1 54430 定义变量给后面命令使用.库名DB,密钥库文 ...
- mysql cert_Mysql使用SSL连接
最近项目中用到了SSL连接,记录一下,环境为windows10,Mysql版本为5.6 查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: mysql&g ...
- haproxy ssl_我们如何微调HAProxy以实现2,000,000个并发SSL连接
haproxy ssl by Sachin Malhotra 由Sachin Malhotra 我们如何微调HAProxy以实现2,000,000个并发SSL连接 (How we fine-tuned ...
- SSL连接并非完全问题解决
教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)SSL 连接并非完全安全问题解决. 更多讨论或者错误提交,也请移步. 最近拿到了 TrustAsia ...
最新文章
- Win8上安装天翼宽带运行提示停止运行的问题
- Windows Phone如何获取和添加联系人
- 投资银行对Java进行的二十大核心面试问答
- 第一节:WebApi的纯原生态的RestFul风格接口和路由规则介绍
- Ⅴ0还有别的方法设置图案吗_定制汽车硅胶按键你知道厂家是怎么给汽车按键镭雕的吗...
- linux如何启动wifi,【教程】Wii安装运行可用WIFI的Linux系统全攻略
- Java报警110_Java入门基础SL110
- react---之下拉菜单默认选中的值始终不变的问题
- java 调用 c# webservice 压缩 Liststring示例
- 第六章 jQuery 选择器——课后作业:
- python爬iptv直播源脚本_GitHub - bensonlai2002/iptv-m3u-maker: IPTV 国内+国外 电视台直播源m3u文件, 收集汇总本地源脚本...
- 中国物联网:价值万亿美元的重大契机
- 最全的人力资源行业精美报表模板,免费下载啦
- 少儿编程 电子学会图形化编程等级考试Scratch四级真题解析(判断题)2022年3月
- HTTP协议知识点总结
- 去静态化 php,PHP页面静态化 - 菜鸟要飞啊的IT小窝 - OSCHINA - 中文开源技术交流社区...
- 超牛叉技术支撑的成人网站
- buuctf [强网杯 2019]随便注 1
- 面向对象的三大特性是什么
- OPJ2.1基本算法之枚举1815:画家问题
热门文章
- R语言调色板——colors()
- tomcat下载与安装win11
- 微擎mysql和redis_微擎如何开启redis,redis开启方法详解
- 电源输出电压纹波及电流纹波测试步骤
- cad记忆口诀_42条简单易记的CAD口诀,一天精通入门,七天上手绘图!
- windows双系统如何删除ubuntu系统并重装
- 通往天堂的选择问题 python_意识体革命
- OnInitDialog()中SetFocus()不起作用解决方法
- 主板常见故障维修24例(新手必备)
- oracle10.21数据库安装,安装并创建数据库【Oracle Database 10g】(三)