php openldap支持ssl,基于OpenLDAP服务端和客户端的SSL/TLS的配置方法
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的配置方法相关推荐
- 【REST】基于RESTful服务端的客户端实现(HttpClient、RestTemplate、HttpURLConnection)
最近一直在做针对webservice的接口协议对接,总结了一下基于restful服务端的客户端的实现方式,有以下三种: HTTPClient RestTemplate HttpURLConnectio ...
- 基于Axis服务端的webservice客户端实现
之前开发webservice客户端的时候遇到一个使用Axis2开发接口的厂家,查资料把Axis1和Axis2客户端的开发方式总结如下: 基于Axis1服务端的客户端实现: /*** 使用Axis Ca ...
- 服务端和客户端证书各种组合下对访问者(浏览器/中间人)的影响
今天本来想研究下nginx下如果获取SSL指纹,但是环境没有装成功 就尝试了下如果不用nginx直接在服务端拿到SSL指纹, 没想到从创建自签名证书到如何开启证书, 以及服务端证书和客户端证书各种组合 ...
- websocket测试工具,支持ws wss服务端和客户端
介绍一个名为:WebsocketMan的websocket测试工具,支持ws wss服务端和客户端.可以将请求保存为文件,支持header非常方便测试.支持Windows Linux macOS系统. ...
- 分享一套golang实现的 IM 系统,一键部署服务端,客户端SDK全平台支持,可以替代IM云服务
开篇 自互联网诞生以来,即时通讯平台就一直存在.从世界范围来看,WhatsApp.Facebook. 微信.Telegram是领先的消息平台,用户主要使用这些平台与家人和朋友保持联系.随着互联网的发展 ...
- Arduino ESP32 基于Web服务端SD文件管理系统完善
Arduino ESP32 基于Web服务端SD文件管理系统功能完善 在上一版的基础上添加了,查看SD卡容量的功能. 接线说明 Hard SPI* MICROSD CS - ESP32 IO5MICR ...
- 【计算机网络】服务端和客户端最大支持多少tcp连接?如何分析?
文章目录 (一)引用文章 (二)简单分析: 1.基本概念:TCP四元组 2.多个客户端连接一个服务端最大支持最大多少tcp连接? 3.一个客户端连接一个服务端最大支持多少个tcp连接? (二)全面分析 ...
- java 服务端渲染_基于vue-ssr服务端渲染入门详解
第一部分 基本介绍 1.前言 服务端渲染实现原理机制:在服务端拿数据进行解析渲染,直接生成html片段返回给前端.然后前端可以通过解析后端返回的html片段到前端页面,大致有以下两种形式: 1.服务器 ...
- nodejs01——安装及使用、服务端及客户端、commonjs规范、fs模块的使用(文件操作及目录操作)、stream、buffer、WebServer、端口、动态资源及静态资源、头信息、请求方式
nodejs的安装及使用 服务端及客户端 commonjs规范 fs模块的使用(文件操作及目录操作) stream buffer // Node.js介绍 Node.js 诞生于2009年,Node. ...
- 【201】openssl生成服务端和客户端证书详解
内容目录(原文见公众号python宝) 一.基本知识点介绍二.openssl生成服务端和客户端证书www.xmmup.com 一.基本知识点介绍 要支持https请求,那就需要一个SSL证书. S ...
最新文章
- 极力推荐python初学者使用wingIDE
- xgboost安装_Machine Learning Mastery 博客文章翻译:XGBoost
- hihocoder1398 网络流五之最大权闭合子图
- html文本显示状态代码中,HTML文本显示状态代码中,表示?
- MongoDB3.4为单独的数据库创建用户
- jsf 导航_JSF动作方法导航示例教程– from-action标记
- [server]阿里云服务器远程文件传输的解决方案
- cassandra 3.x官方文档(5)---探测器
- 2019杭州云栖大会探营:神龙的秘密
- 现代通信原理4.2:随机过程
- 终极算法【5】——进化学派
- CS61B的入门必备的排坑手册
- Elasticsearch索引分片的数量及大小分配策略
- 【深度强化学习】交叉熵方法
- 游戏的现实规则和非现实规则
- python url加密解密_python解密百度加密链接的脚本
- 《电脑十万个为什么》 第四卷 第一章
- 虽然不能去故宫办婚礼,但你可以帮故宫找“中纹”啊!
- PCL(Point Cloud Library)学习指南资料推荐(2021版)
- 《多媒体在初中数学中的运用研究》课题研究活动记录
热门文章
- SQL 常用英文单词
- php软件怎么使用方法,ps软件的日常使用方法有哪些?
- 计算机怎么设置内存数据恢复,相机内存卡数据恢复的操作图解
- c语言日历程序 带农历,一个完整的日历程序(含有农历)
- pythyon爬虫实现12306查票
- mysql udal_mysql分表分区
- 【源码之下无秘密】ArrayList:在内存只有10M的空间中申请一块5M的数组空间,会导致OOM吗?
- Go语言——没有对象的面向对象编程
- 计算机主机内有哪些硬件,电脑主机内部有哪些硬件
- ToolBar修改返回按钮图标,CollapsingToolbarLayout修改文字居中