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 是否支持某个算法,如 ECDH-ECDSA-AES128-GCM-SHA256

# openssl ciphers ECDH-ECDSA-AES128-GCM-SHA256

查看 OpenSSL 是否支持某个协议,如 TLSv1.2

# openssl ciphers TLSv1.2

查看 x509 证书

# openssl x509 -in cert.pem -text –noout

检测与 LDAP server 的连接

# openssl s_client -connect 9.181.137.155:636 -showcerts -state -CAfile /opt/ibm/director/vmi/data/sec/vmitruststore.pem

生成自签名的 CA 证书

#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

使用指定的私钥生成一个 CSR (Certificate Signing Request)

#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

将私钥和证书转化为 PKCS#12 格式的单个文件

#openssl pkcs12 -export -in whhit.pem.cer -inkey whhit.pem.key -passin pass:123456 -out whhit.p12 -passout pass:123456 -name tomcat

php openldap支持ssl,基于OpenLDAP服务端和客户端的SSL/TLS的配置方法相关推荐

  1. 【REST】基于RESTful服务端的客户端实现(HttpClient、RestTemplate、HttpURLConnection)

    最近一直在做针对webservice的接口协议对接,总结了一下基于restful服务端的客户端的实现方式,有以下三种: HTTPClient RestTemplate HttpURLConnectio ...

  2. 基于Axis服务端的webservice客户端实现

    之前开发webservice客户端的时候遇到一个使用Axis2开发接口的厂家,查资料把Axis1和Axis2客户端的开发方式总结如下: 基于Axis1服务端的客户端实现: /*** 使用Axis Ca ...

  3. 服务端和客户端证书各种组合下对访问者(浏览器/中间人)的影响

    今天本来想研究下nginx下如果获取SSL指纹,但是环境没有装成功 就尝试了下如果不用nginx直接在服务端拿到SSL指纹, 没想到从创建自签名证书到如何开启证书, 以及服务端证书和客户端证书各种组合 ...

  4. websocket测试工具,支持ws wss服务端和客户端

    介绍一个名为:WebsocketMan的websocket测试工具,支持ws wss服务端和客户端.可以将请求保存为文件,支持header非常方便测试.支持Windows Linux macOS系统. ...

  5. 分享一套golang实现的 IM 系统,一键部署服务端,客户端SDK全平台支持,可以替代IM云服务

    开篇 自互联网诞生以来,即时通讯平台就一直存在.从世界范围来看,WhatsApp.Facebook. 微信.Telegram是领先的消息平台,用户主要使用这些平台与家人和朋友保持联系.随着互联网的发展 ...

  6. Arduino ESP32 基于Web服务端SD文件管理系统完善

    Arduino ESP32 基于Web服务端SD文件管理系统功能完善 在上一版的基础上添加了,查看SD卡容量的功能. 接线说明 Hard SPI* MICROSD CS - ESP32 IO5MICR ...

  7. 【计算机网络】服务端和客户端最大支持多少tcp连接?如何分析?

    文章目录 (一)引用文章 (二)简单分析: 1.基本概念:TCP四元组 2.多个客户端连接一个服务端最大支持最大多少tcp连接? 3.一个客户端连接一个服务端最大支持多少个tcp连接? (二)全面分析 ...

  8. java 服务端渲染_基于vue-ssr服务端渲染入门详解

    第一部分 基本介绍 1.前言 服务端渲染实现原理机制:在服务端拿数据进行解析渲染,直接生成html片段返回给前端.然后前端可以通过解析后端返回的html片段到前端页面,大致有以下两种形式: 1.服务器 ...

  9. nodejs01——安装及使用、服务端及客户端、commonjs规范、fs模块的使用(文件操作及目录操作)、stream、buffer、WebServer、端口、动态资源及静态资源、头信息、请求方式

    nodejs的安装及使用 服务端及客户端 commonjs规范 fs模块的使用(文件操作及目录操作) stream buffer // Node.js介绍 Node.js 诞生于2009年,Node. ...

  10. 【201】openssl生成服务端和客户端证书详解

    内容目录(原文见公众号python宝) 一.基本知识点介绍二.openssl生成服务端和客户端证书www.xmmup.com 一.基本知识点介绍   要支持https请求,那就需要一个SSL证书. S ...

最新文章

  1. 极力推荐python初学者使用wingIDE
  2. xgboost安装_Machine Learning Mastery 博客文章翻译:XGBoost
  3. hihocoder1398 网络流五之最大权闭合子图
  4. html文本显示状态代码中,HTML文本显示状态代码中,表示?
  5. MongoDB3.4为单独的数据库创建用户
  6. jsf 导航_JSF动作方法导航示例教程– from-action标记
  7. [server]阿里云服务器远程文件传输的解决方案
  8. cassandra 3.x官方文档(5)---探测器
  9. 2019杭州云栖大会探营:神龙的秘密
  10. 现代通信原理4.2:随机过程
  11. 终极算法【5】——进化学派
  12. CS61B的入门必备的排坑手册
  13. Elasticsearch索引分片的数量及大小分配策略
  14. 【深度强化学习】交叉熵方法
  15. 游戏的现实规则和非现实规则
  16. python url加密解密_python解密百度加密链接的脚本
  17. 《电脑十万个为什么》 第四卷 第一章
  18. 虽然不能去故宫办婚礼,但你可以帮故宫找“中纹”啊!
  19. PCL(Point Cloud Library)学习指南资料推荐(2021版)
  20. 《多媒体在初中数学中的运用研究》课题研究活动记录

热门文章

  1. SQL 常用英文单词
  2. php软件怎么使用方法,ps软件的日常使用方法有哪些?
  3. 计算机怎么设置内存数据恢复,相机内存卡数据恢复的操作图解
  4. c语言日历程序 带农历,一个完整的日历程序(含有农历)
  5. pythyon爬虫实现12306查票
  6. mysql udal_mysql分表分区
  7. 【源码之下无秘密】ArrayList:在内存只有10M的空间中申请一块5M的数组空间,会导致OOM吗?
  8. Go语言——没有对象的面向对象编程
  9. 计算机主机内有哪些硬件,电脑主机内部有哪些硬件
  10. ToolBar修改返回按钮图标,CollapsingToolbarLayout修改文字居中