配置 OpenLDAP 使用 SSL/TLS 加密数据通信
OpenLDAP 和 OpenSSL 简介
OpenLDAP 是最常用的目录服务之一,它是一个由开源社区及志愿者开发和管理的一个开源项目,提供了目录服务的所有功能,包括目录搜索、身份认证、安全通道、过滤器等等。大多数的 Linux 发行版里面都带有 OpenLDAP 的安装包。OpenLDAP 服务默认使用非加密的 TCP/IP 协议来接收服务的请求,并将查询结果传回到客户端。由于大多数目录服务都是用于系统的安全认证部分比如:用户登录和身份验证,所以它也支持使用基于 SSL/TLS 的加密协议来保证数据传送的保密性和完整性。OpenLDAP 是使用 OpenSSL 来实现 SSL/TLS 加密通信的。
OpenSSL 是 SSL/TLS 加密算法及通信协议的开源实现包,实现了 SSLv2、SSLv3、TLSv1 及 TLSv1.2 的加密算法和通信协议,并提供 API 给第三方应用。第三方应用可以很容易的使用 OpenSSL 来将明文通信加密。OpenLDAP 和 OpenSSL 的互相配合是本文的主要内容,包括:OpenLDAP 服务端的 SSL/TLS 配置、OpenLDAP 客户端的 SSL/TLS 配置。
本文讲述的所有内容和命令适用于 Redhat Enterprise Linux 6.3,其他发行版本的 Linux 可能略有不同。
配置 OpenLDAP 使用 SSL/TLS 加密数据通信
SSL/TLS 加密原理简介
SSL/TLS 是基于 PKI 机制的加密方式,包括证书认证、密钥交换、非对称加密、对称加密。SSL/TLS 采用 CA 作为服务端和客户端都信赖的具有权威性的组织,证书的颁发和认证都依赖于 CA,并假定 CA 颁发的证书是可靠的、可信赖的,证书里面的内容是真实的、有效的,并可用于客户机和服务器进行安全的可靠的通信加密。
SSL/TLS 证书用来认证服务器和客户机双方的身份,并用于密钥交换时候的非对称加密。密钥交换完毕之后,就可以用这个密钥做通信数据的对称加密了,具体的加密算法是由客户机和服务器互相协商得来。服务器和客户机由于 SSL/TLS 库的不同以及用户的配置不同,双方支持的算法列表不完全相同,当双方做 SSL/TLS 握手的时候,就需要将自己支持的算法列表及优先顺序告知对方,一旦对方按照优先顺序找到了第一个支持的算法,那么协商完成,否则双方协商失败,SSL/TLS 连接断开。
如何配置 OpenLDAP 客户端和服务端的算法列表将在本文的后续内容中做重点介绍,用户可以通过控制这个列表来提高安全等级,或者降低安全等级来适应更多的算法。
OpenSSL 常用命令
OpenSSL 提供了为数众多的命令来帮助用户使用和查看 SSL/TLS 加密算法、查看证书、生成证书、测试 SSL/TLS 连接等等,以下是一些常用命令的介绍。
· 查看 OpenSSL 支持的所有算法
· 查看 OpenSSL 是否支持某个算法,如 ECDH-ECDSA-AES128-GCM-SHA256
· 查看 OpenSSL 是否支持某个协议,如 TLSv1.2
· 查看 x509 证书
· 检测与 LDAP server 的连接
· 生成自签名的 CA 证书
· 生成私钥
· 使用指定的私钥生成一个 CSR (Certificate Signing Request)
· 将加密的私钥导出为明文的私钥
· 使用指定的私钥签名生成证书
· 将私钥和证书转化为 PKCS#12 格式的单个文件
OpenLDAP 的 SSL/TLS 服务器端配置
OpenLDAP 服务端的配置包括软件安装、证书生成、密码组配置等,下面是详细介绍。
· 服务器端需要安装的软件
检查 OpenLDAP 和 OpenSSL 的组件是否已经安装,如果没有,需要先安装如下组件:
· 用 PKI 生成 SSL/TLS 服务器证书
创建证书分为 3 个步骤,创建 CA、创建证书请求和用 CA 对证书请求签名生成证书。
1. 创建 CA
/etc/pki/tls/misc 是工作目录,/etc/pki/CA 是存放所有 CA 相关文件的目录。如果脚本检测到/etc/pki/CA 下面有文件存在,CA 脚本什么工作也不会做。为确保 CA 脚本能正常工作,需要先把/etc/pki/CA 目录下的文件全删除。
2. 创建 Server 端证书
证书的生成分为两步,生成证书请求文件和用 CA 对证书文件进行签名。
3. CA 对证书请求签名
在/etc/pki/tls/misc 路径下创建了 3 个文件,newreq.pem 创建证书请求文件,newcert.pem CA 签发的证书,newkey.pem 证书对应的钥匙。
重命名证书和私钥文件
把这两个文件和 CA 的证书文件拷贝到 OpenLDAP 存放证书的目录下,一般在/etc/openldap/cacerts。如果 CA 与 LDAP server 不在同一台机器上需要用 scp 命令将以下文件拷贝到 LDAP server 相应目录。
· 配置 LDAP 服务器
1. 停掉 LDAP 服务
2. 编辑/etc/openldap/slapd.conf 在 slapd.conf 文件中加入以下内容
12. 启动 LDAP 服务
OpenLDAP 的 SSL/TLS 客户端配置
OpenLDAP 客户端的配置包括证书创建、服务器连接配置、证书配置、密码组配置等,以下是详细的步骤。
· Client 端的证书文件制作
Client 端的证书制作与 Server 端类似,先创建请求文件,然后用 CA 对请求文件进行签名。签名时一般采用 Client 的主机名(hostname)做为 Common name。证书的名字实际上就是证书中的 Common Name 字段。这个字段应该从证书中进行检索,并根据主机名进行验证,如果二者不能匹配,证书的安全性就会受到质疑。有些公司在不同的主机上使用相同的证书,即使证书中的 Common Name 只是用于一个主机的,这是为了确保证书来自相同的公司,能够进行更深入的检查。Common Name 具体取什么值取决于项目的安全性需要。
把这两个文件和 CA 的证书文件用 scp 命令拷贝到 Client 端 OpenLDAP 存放证书的目录下,如/etc/openldap/cacerts。
· 编辑/etc/openldap/ldap.conf
· 重启 LDAP 服务
· 检验与 LDAP server 之间是否能连通
验证 OpenLDAP 服务器端和客户端的 SSL/TLS 协议协商方式
为了验证 OpenLDAP 的服务端和客户端的 SSL/TLS 连接协议的正确性,我们可以按照如下的步骤来检验。
· 配置服务器端并重启服务器端的 LDAP Service
按照前面叙述的步骤配置好 LDAP 服务器。
重启 LDAP Service
导入 LDAP user 信息
将 ldif 文件上传到 ldap 服务器,如 tmp 目录。如导入的文件名字为 ldapou.ldif, 其文件中关于 oladmin 账户的内容如下:
运行如下命令增加用户和组到 LDAP 服务器目录
重启 LDAP Service
· 配置客户端并重启客户端的 LDAP Service
在客户端的/etc/openldap/目录中配置 ldap.conf 文件,内容如下:
· 在客户端验证服务器端的 LDAP user 信息
运行 ldapsearch 命令,查看服务器端的 user
命令运行后的结果
从返回的结果中可以找到从服务器端导入的 user,如 oladmin 等账户信息,证明 TLS LDAP 连接时建立好了。
总结
通过本文的讲述和实验,我们可以更深入的了解 OpenLDAP 和 OpenSSL 是如何协同工作的,并如何配置 OpenLDAP 的服务端和客户端以满足用户对数据通信安全的要求,这些都是当前网络安全及加密安全的问题日益严重的情况下,用户的迫切需求。
OpenLDAP 是最常用的目录服务之一,它是一个由开源社区及志愿者开发和管理的一个开源项目,提供了目录服务的所有功能,包括目录搜索、身份认证、安全通道、过滤器等等。大多数的 Linux 发行版里面都带有 OpenLDAP 的安装包。OpenLDAP 服务默认使用非加密的 TCP/IP 协议来接收服务的请求,并将查询结果传回到客户端。由于大多数目录服务都是用于系统的安全认证部分比如:用户登录和身份验证,所以它也支持使用基于 SSL/TLS 的加密协议来保证数据传送的保密性和完整性。OpenLDAP 是使用 OpenSSL 来实现 SSL/TLS 加密通信的。
OpenSSL 是 SSL/TLS 加密算法及通信协议的开源实现包,实现了 SSLv2、SSLv3、TLSv1 及 TLSv1.2 的加密算法和通信协议,并提供 API 给第三方应用。第三方应用可以很容易的使用 OpenSSL 来将明文通信加密。OpenLDAP 和 OpenSSL 的互相配合是本文的主要内容,包括:OpenLDAP 服务端的 SSL/TLS 配置、OpenLDAP 客户端的 SSL/TLS 配置。
本文讲述的所有内容和命令适用于 Redhat Enterprise Linux 6.3,其他发行版本的 Linux 可能略有不同。
配置 OpenLDAP 使用 SSL/TLS 加密数据通信
SSL/TLS 加密原理简介
SSL/TLS 是基于 PKI 机制的加密方式,包括证书认证、密钥交换、非对称加密、对称加密。SSL/TLS 采用 CA 作为服务端和客户端都信赖的具有权威性的组织,证书的颁发和认证都依赖于 CA,并假定 CA 颁发的证书是可靠的、可信赖的,证书里面的内容是真实的、有效的,并可用于客户机和服务器进行安全的可靠的通信加密。
SSL/TLS 证书用来认证服务器和客户机双方的身份,并用于密钥交换时候的非对称加密。密钥交换完毕之后,就可以用这个密钥做通信数据的对称加密了,具体的加密算法是由客户机和服务器互相协商得来。服务器和客户机由于 SSL/TLS 库的不同以及用户的配置不同,双方支持的算法列表不完全相同,当双方做 SSL/TLS 握手的时候,就需要将自己支持的算法列表及优先顺序告知对方,一旦对方按照优先顺序找到了第一个支持的算法,那么协商完成,否则双方协商失败,SSL/TLS 连接断开。
如何配置 OpenLDAP 客户端和服务端的算法列表将在本文的后续内容中做重点介绍,用户可以通过控制这个列表来提高安全等级,或者降低安全等级来适应更多的算法。
OpenSSL 常用命令
OpenSSL 提供了为数众多的命令来帮助用户使用和查看 SSL/TLS 加密算法、查看证书、生成证书、测试 SSL/TLS 连接等等,以下是一些常用命令的介绍。
· 查看 OpenSSL 支持的所有算法
#openssl ciphers
# openssl ciphers ECDH-ECDSA-AES128-GCM-SHA256
# openssl ciphers TLSv1.2
# openssl x509 -in cert.pem -text –noout
· # openssl s_client -connect 9.181.137.155:636 -showcerts -state /
-CAfile /opt/ibm/director/vmi/data/sec/vmitruststore.pem
· #openssl req -x509 -newkey rsa:1024 -passout pass:123456 -days 3650 /
· -keyout whhit.pem.key -out whhit.pem.cer -subj /
"/CN=whhit.me/OU=WeRun Club/O=whhit/L=Weihai/S=Shandong/C=CN"
#openssl genrsa -des3 -out whhit.pem.key -passout pass:123456 1024
· #openssl req -new -key whhit.pem.key -passin pass:123456 /
· -out whhit.pem.csr -subj /
"/CN=whhit.me/OU=WeRun Club/O=whhit/L=Weihai/S=Shandong/C=CN"
#openssl rsa -in whhit.pem.key -passin pass:123456 -out whhit.pem.clear.key
#openssl x509 -req -days 3650 -in whhit.pem.csr -signkey whhit.pem.clear.key -out whhit.pem.cer
· #openssl pkcs12 -export -in whhit.pem.cer -inkey whhit.pem.key -passin pass:123456 /
-out whhit.p12 -passout pass:123456 -name tomcat
OpenLDAP 服务端的配置包括软件安装、证书生成、密码组配置等,下面是详细介绍。
· 服务器端需要安装的软件
检查 OpenLDAP 和 OpenSSL 的组件是否已经安装,如果没有,需要先安装如下组件:
openldap2-back-meta-2.4.20-35,openldap2-client-2.4.20-35,openldap2-2.4.20-35,/openldap2-back-perl-2.4.20-35,openssl-1.0.1e-13,openssl-32bit-1.0.1e-13,/php5-openssl-5.2.14-0.7.30.38.2,python-openssl-0.7.0-217
创建证书分为 3 个步骤,创建 CA、创建证书请求和用 CA 对证书请求签名生成证书。
1. 创建 CA
/etc/pki/tls/misc 是工作目录,/etc/pki/CA 是存放所有 CA 相关文件的目录。如果脚本检测到/etc/pki/CA 下面有文件存在,CA 脚本什么工作也不会做。为确保 CA 脚本能正常工作,需要先把/etc/pki/CA 目录下的文件全删除。
# cd /etc/pki/tls/misc (进入工作目录)
# ./CA –newca (生成 CA)
证书的生成分为两步,生成证书请求文件和用 CA 对证书文件进行签名。
#./CA.pl –newreq (生成证书请求)
#./CA.pl –sign
重命名证书和私钥文件
# mv newcert.pem server.cert# mv newkey.pem server.key# chmod 644 server.cert# chmod 644 server.key
# mv server.cert /etc/openldap/cacerts# mv serve.key /etc/openldap/cacerts# cp ../../CA/cacert.pem /etc/openldap/cacerts
1. 停掉 LDAP 服务
#service ldap stop
3. TLSCACertificateFile /etc/openldap/cacerts/cacert.pem #配置 CA 证书的路径
4. TLSCertificateFile /etc/openldap/cacerts/server.cert #配置 server 证书的路径
5. TLSCertificateKeyFile /etc/openldap/cacerts/server.key #配置 server 私钥的路径
6. TLSCipherSuite ALL:!TLSv1.1:TLSv1.2:!SSLv2:!aNULL:!eNULL:!MD5:!MEDIUM:!LOW
7. :!EXPORT:@STRENGTH #支持的协议密码及不支持的协议和密码,!表示不支持
8. TLSVerifyClient never # 设置是否验证 client 的身份,其值可以是 never/allow/try/demand,
9. #never 不需要验证 client 端的身份,Client 端只需要有 CA 证书就可以了
10. #allow Server 会要求 client 提供证书,如果 client 端没有提供证书,会话会正常进行
11. #try Client 端提供了证书,但是 Server 端有可能不能校验这个证书,这个证书会被忽略,会话正常进行
#demand Server 端需要认证 client 端的身份,Client 端需要有自己的证书和私钥
#service ldap start
OpenLDAP 客户端的配置包括证书创建、服务器连接配置、证书配置、密码组配置等,以下是详细的步骤。
· Client 端的证书文件制作
Client 端的证书制作与 Server 端类似,先创建请求文件,然后用 CA 对请求文件进行签名。签名时一般采用 Client 的主机名(hostname)做为 Common name。证书的名字实际上就是证书中的 Common Name 字段。这个字段应该从证书中进行检索,并根据主机名进行验证,如果二者不能匹配,证书的安全性就会受到质疑。有些公司在不同的主机上使用相同的证书,即使证书中的 Common Name 只是用于一个主机的,这是为了确保证书来自相同的公司,能够进行更深入的检查。Common Name 具体取什么值取决于项目的安全性需要。
#./CA.pl –newreq (生成证书请求)#./CA.pl –sign # mv newcert.pem client.cert# mv newkey.pem client.key# chmod 644 client.cert# chmod 644 client.key
· 编辑/etc/openldap/ldap.conf
· URI ldaps://vm189.cn.ibm.com:636 # 一定要和 server 的证书里输入的 full qualified name 一样
· TLS_CACERT /etc/openldap/cacerts/cacert.pem # CA 的证书
· TLS_REQCERT never # client 是否要求认证 server 端
· TLS_CIPHER_SUITE ALL:!TLSv1.1:!TLSv1:!SSLv3:!SSLv2:!aNULL:!eNULL:!MD5:!MEDIUM:!LOW:
!EXPORT:@STRENGTH
#service ldap restart
· #openssl s_client –connect vm189.cn.ibm.com:636 –CAfile /etc/openldap/cacerts/cacert
.pem-showcerts –state
为了验证 OpenLDAP 的服务端和客户端的 SSL/TLS 连接协议的正确性,我们可以按照如下的步骤来检验。
· 配置服务器端并重启服务器端的 LDAP Service
按照前面叙述的步骤配置好 LDAP 服务器。
重启 LDAP Service
#service ldap restart
将 ldif 文件上传到 ldap 服务器,如 tmp 目录。如导入的文件名字为 ldapou.ldif, 其文件中关于 oladmin 账户的内容如下:
dn: uid=oladmin,ou=People,c=cn,dc=ibm,dc=comuid: oladmincn: oladminsn: oladminmail: oladmin@cn.ibm.comobjectClass: personobjectClass: organizationalPersonobjectClass: inetOrgPersonobjectClass: topobjectClass: posixAccountuserPassword: passw0rduidNumber: 501gidNumber: 501homeDirectory: /home/oladmin
# ldapadd -x -D "cn=root,c=cn,dc=ibm,dc=com" -w passw0rd -f /tmp/ldapou.ldif
#service ldap restart
在客户端的/etc/openldap/目录中配置 ldap.conf 文件,内容如下:
TLS_REQCERT neverTLS_CIPHER_SUITE ALL:!TLSv1.1:!TLSv1:!SSLv3:!SSLv2:!aNULL:!eNULL:!MD5:!MEDIUM:!LOW:!EXPORT:@STRENGTHURI ldaps://vm189.cn.ibm.com:636 #ldap server 地址base c=cn,dc=ibm,dc=com binddn cn=root,c=cn,dc=ibm,dc=combindpw crypt{77f132b2f9d77723}searchfilter (&(uid=%v)(objectclass=inetOrgPerson))pam_login_attribute uidldap_version 3timelimit 30bind_timelimit 30bindpw_key /etc/openldap/fsm.data #密码TLS_CACERT /opt/ibm/director/vmi/data/sec/vmitruststore.pem #CA 证书pam_lookup_policy yes
运行 ldapsearch 命令,查看服务器端的 user
# ldapsearch -x -ZZ -h 9.181.137.189 636 (ZZ 选项用来启动 TLS 连接)
# extended LDIF# LDAPv3# base <c=cn,dc=ibm,dc=com> (default) with scope subtree# filter: (objectclass=*)# requesting: 636# cn, ibm.comdn: c=cn,dc=ibm,dc=com# People, cn, ibm.comdn: ou=People,c=cn,dc=ibm,dc=com# Group, cn, ibm.comdn: ou=Group,c=cn,dc=ibm,dc=com# oladmin, People, cn, ibm.comdn: uid=oladmin,ou=People,c=cn,dc=ibm,dc=com
……(此处省略了其他账户的信息)
总结
通过本文的讲述和实验,我们可以更深入的了解 OpenLDAP 和 OpenSSL 是如何协同工作的,并如何配置 OpenLDAP 的服务端和客户端以满足用户对数据通信安全的要求,这些都是当前网络安全及加密安全的问题日益严重的情况下,用户的迫切需求。
>更多相关文章
- 03-25工业 4.0 正在推动企业光纤接入
- 03-25深入了解 5G 基础设施
- 03-25开展网络行为风险分析的五种手段
- 03-25美国国家安全局是如何入侵你的电脑的?
- 11-18攻击者利用SSL进行加密攻击和通信
- 11-18骗子利用Google Ads从假加密货币钱包中抽走数十万美金
- 11-18手把手教你如何实现一个简单的数据加解密算法
- 11-18安全事件响应计划的五个步骤
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-25优酷推出U镜到底等直播功能 已应用在羽毛球
- 12-25百川智能正式发布全链路领域增强大模型
- 12-25SHEIN4家仓储物流园获“零废工厂”认证
- 12-25西方博主在TikTok上展现中国风貌,“China
- 12-05亚马逊推出新一代基础模型 任意模态生成大模
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御