原文发表于cu:2016-07-04

参考文档:

  1. 基于OpenSSL自建CA与颁发SSL证书:http://seanlook.com/2015/01/18/openssl-self-sign-ca/
  2. OpenLDAP with TLS:http://my.oschina.net/aiguozhe/blog/151554

一.环境

Server:基于CentOS-7-x86_64-1511

Server IP: 172.18.12.203

OpenLDAP:openldap-2.4.44已安装

二.准备工作

1. 依赖包

  1. #理论上只需要openssl与openssl-devel
  2. yum install *openssl* -y

openldap编译需要开启"--with-tls"选项,可通过"./configure --help"查看相关说明,请参考:http://www.cnblogs.com/netonline/p/7486832.html

openssl相关依赖包一定要安装在openldap安装之前,在openldap安装之后再yum安装openssl相关依赖包,运行ldaps命令时时报" 573d212b daemon: TLS not supported (ldaps://0.0.0.0:636/)"错(如下图),安装openssl相关包之后重新编译安装openldap解决。

可以使用"/usr/local/openldap-2.4.44/libexec/slapd"命令查看执行命令是否关联相应libraries,上面就是通过此方法定位故障点的:http://comments.gmane.org/gmane.network.openldap.technical/874

2. iptables

OpenLDAP with TLS/SSL默认使用tcp 636端口,提前在iptables放行。

三.配置TLS

  1. OpenLDAPhome目录创建1个子目录,后续操作均在此目录进行
  2. [root@localhost ~]# cd /usr/local/openldap-2.4.44
  3. [root@localhost openldap-2.4.44]# mkdir -p certs
  4. [root@localhost openldap-2.4.44]# cd certs/

1. CA中心操作(如已有CA证书则跳过)

生成CA根密钥(1)

  1. #带上”-des3”参数时,创建的私钥采取Triple DES算法加密,命令执行后会要求输入密码,这样后续在调用此密钥时都会要求输入密码,如 “openssl genrsa -des3 -out ca-key.pem 2048”,这里为了方便省略此参数
  2. [root@localhost certs]# openssl genrsa -out cakey.pem 2048
  3.  
  4. #可以查看生成的rsa 私钥
  5. [root@localhost certs]# openssl rsa -noout -text -in cakey.pem
  6.  
  7. #option选项,基于安全性考虑,建议修改根密钥权限为600或400
  8. [root@localhost certs]# chmod 600 cakey.pem

生成CA根证书(2)

  1. #利用req命令与CA根证书生成自签署的根证书,证书有效期1年;
  2. #生成证书时,上方红色粗体字部分是要求输入的信息,其中需要注意的是”Common Name”请填写服务器域或IP
  3. [root@localhost certs]# openssl req -new -x509 -days 365 -key cakey.pem -out ca.crt
  4. You are about to be asked to enter information that will be incorporated
  5. into your certificate request.
  6. What you are about to enter is what is called a Distinguished Name or a DN.
  7. There are quite a few fields but you can leave some blank
  8. For some fields there will be a default value,
  9. If you enter '.', the field will be left blank.
  10. -----
  11. Country Name (2 letter code) [XX]:CN
  12. State or Province Name (full name) []:Sichuan
  13. Locality Name (eg, city) [Default City]:Chengdu
  14. Organization Name (eg, company) [Default Company Ltd]:SYS
  15. Organizational Unit Name (eg, section) []:IT
  16. Common Name (eg, your name or your server's hostname) []:172.18.12.203
  17. Email Address []:xxx@sys.com
  18.  
  19. #可以查看生成的根证书
  20. [root@localhost certs]# openssl x509 -noout -text -in ca.crt

2. OpenLDAP服务器端操作

生成OpenLDAP服务器私钥(3)

  1. #同上,可带"-des3"参数,同步骤(1)
  2. [root@localhost certs]# openssl genrsa -out ldapkey.pem 2048

生成OpenLDAP服务器证书签署请求文件(4)

  1. #请求文件需要发给CA中心签署生成证书,相当于公钥;
  2. #同步骤(2)会要求输入一些信息,相对于步骤(2)额外的信息可忽略
  3. [root@localhost certs]# openssl req -new -key ldapkey.pem -out ldapserver.csr
  4.  
  5. #查看请求文件
  6. [root@localhost certs]# openssl req -noout -text -in ldapserver.csr

3. CA中心签署证书

签署证书的准备工作 (5)

  1. #如果CA中心准备工作已经做好,此步可跳过。
  2. [root@localhost certs]# cp /etc/pki/tls/openssl.cnf ./
  3. [root@localhost certs]# mkdir -p newcerts
  4. [root@localhost certs]# touch index.txt
  5. [root@localhost certs]# echo "00" > serial
  6.  
  7. #修改第42行,证书生成配置文件的工作目录”dir =/etc/pki/CA”修改为当前配置文件工作的目录,如下:
  8. [root@localhost certs]# vim openssl.cnf
  9. 42 dir = /usr/local/openldap-2.4.44/certs

签署证书(6)

  1. #需要将OpenLDAP服务器生成的csr请求文件发给CA中;
  2. #生成证书会有两次确认,”y”即可;
  3. #如果重新签署证书,需要先将index.txt的内容用index.txt.old还原
  4. [root@localhost certs]# openssl ca -days 365 -cert ca.crt -keyfile cakey.pem -in ldapserver.csr -out ldapserver.crt -config openssl.cnf

4. 复制证书/密钥到工作目录(7)

  1. #主要涉及CA中心的证书,CA中心为OpenLDAP服务器签署的证书与私钥
  2. [root@localhost certs]# mkdir -p /usr/local/openldap-2.4.44/etc/openldap/cacerts
  3. [root@localhost certs]# cp ca.crt /usr/local/openldap-2.4.44/etc/openldap/cacerts
  4. [root@localhost certs]# cp ldapserver.crt /usr/local/openldap-2.4.44/etc/openldap/
  5. [root@localhost certs]# cp ldapkey.pem /usr/local/openldap-2.4.44/etc/openldap/

5. 修改OpenLDAP主配置文件slapd.conf(8)

  1. #可以在文件最后添加步骤(7)中证书/密钥的工作路径
  2. [root@localhost certs]# cd /usr/local/openldap-2.4.44/etc/openldap/
  3. [root@localhost openldap]# vim slapd.conf
  4. TLSCACertificateFile /usr/local/openldap-2.4.44/etc/openldap/cacerts/ca.crt
  5. TLSCertificateFile /usr/local/openldap-2.4.44/etc/openldap/ldapserver.crt
  6. TLSCertificateKeyFile /usr/local/openldap-2.4.44/etc/openldap/ldapkey.pem

6. 启动LDAPS

  1. #”-d 256”是为debug,后台运行不需要;
  2. [root@localhost ~]# /usr/local/openldap-2.4.44/libexec/slapd -h ldaps://0.0.0.0:636/” -d 256
  3.  
  4. #或者:[root@localhost ~]# /usr/local/openldap-2.4.44/libexec/slapd -h “ldaps:///” -d 256
  5.  
  6. #或者同时启动389与636端口:[root@localhost ~]# /usr/local/openldap-2.4.44/libexec/slapd -h “ldap:/// ldaps:///” -d 256

7. 启动验证

  1. [root@localhost ~]# netstat tunlp 

8. 通过ldapdmin验证

1) 修改已通过389端口可访问数据库的属性:数据库名,右键-->Properties;

2) 修改389端口为636端口;

3) 弹出窗口提示,选择" View Certificate",点击"Yes";

4) 可以查看证书相关信息,选择"安装证书",一路默认"下一步";

5) 证书导入成功;

6) 通过636端口已可以访问数据库。

OpenLDAP配置TLS加密传输的更多相关文章

  1. MQTT TLS 加密传输

    MQTT TLS 加密传输 Mosquitto原生支持了TLS加密,TLS(传输层安全)是SSL(安全套接层)的新名称,生成证书后再配置一下MQTT代理,本文主要介绍Mqtt如何实现双向认证和单向认证 ...

  2. SSL/TLS加密传输与数字证书解读

    什么是ssl? secure socket layer(ssl)协议最初由netscape企业发展,现已成为网络用来鉴别网站和网页浏览者身份,以及在浏览器使用者及网页服务器之间进行加密通讯的全球化标准 ...

  3. apache配置https加密传输

    环境:两台linux虚拟机和一台windows本机,一台充当要使用https传输的web服务器apache2.4.4,另一台CA服务器,window测试https配置. 1.CA服务器生成私有CA 1 ...

  4. linux下使用vsftp搭建FTP服务器:匿名登录,账号登录,SSL加密传输

    目录 一.关于FTP和VSFTP 二.ftp.sftp.vsftp.vsftpd的区别 三.项目一:搭建一台所有人都可以访问的通用FTP服务器 3.1 项目要求 3.2 项目思路分析 3.3 使用vs ...

  5. Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

    原文地址:http://54im.com/openldap/centos-6-yum-install-openldap-phpldapadmin-tls-%E5%8F%8C%E4%B8%BB%E9%8 ...

  6. 09-OpenLDAP加密传输配置

    OpenLDAP加密传输配置(CA服务器与openldap服务器异机) 阅读视图 环境准备 CA证书服务器搭建 OpenLDAP服务端与CA集成 OpenLDAP客户端配置 客户端测试验证 故障处理 ...

  7. 在SuperSocket中启用TLS/SSL传输层加密

    关键字: TLS, SSL, 传输层加密, 传输层安全, 证书使用, X509Certificate SuperSocket 支持传输层加密(TLS/SSL) SuperSocket 有自动的对TLS ...

  8. nginx配置ssl加密(单双向认证、部分https)

    nginx配置ssl加密(单双向认证.部分https) nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始 ...

  9. [转帖]nginx配置ssl加密(单/双向认证、部分https)

    nginx配置ssl加密(单/双向认证.部分https) https://segmentfault.com/a/1190000002866627   nginx下配置ssl本来是很简单的,无论是去认证 ...

随机推荐

  1. POJ 2524 独一无二的宗教(裸并查集)

    题目链接: http://poj.org/problem?id=2524 Ubiquitous Religions Time Limit: 5000MS   Memory Limit: 65536K ...

  2. java基础需要掌握的内容

    一.Java的基本程序设计结构 二.对象与类 三.继承 四.接口.lambda表达式与内部类 五.异常,断言与日志 六.泛型程序设计 七.集合 八.并发(线程) 九.输入与输出(IO流) 十.网络 十 ...

  3. 浅谈JS异步轮询和单线程机制

    单线程特点执行异步操作 js是单线程语言,浏览器只分配给js一个主线程,用来执行任务(函数),但一次只能执行一个任务,这些任务就会排队形成一个任务队列排队等候执行.一般而已,相对耗时的操作是要通过异步 ...

  4. 请问在一个命令上加什么参数可以实现下面命令的内容在同一行输出。 echo "zhaokang";echo "zhaokang"

    请问在一个命令上加什么参数可以实现下面命令的内容在同一行输出. echo "zhaokang";echo "zhaokang" [root@zhaokang t ...

  5. redis、Memcached、MongoDb使用心得

    最近在思考数据库以及缓存的问题,发现这些知识点其实是有一点关联的,于是这篇文章通过一个连环提问的方式将这些知识点串联起来. 问:为什么要用 Memcached.Redis,直接用 MySQL 这些数据 ...

  6. stm32串口通信实验,一点笔记

    第一次深入学习stm32,花了好长时间才看懂代码(主要是C语言学习不够深入),又花了段时间自己敲了一遍,然后比对教程,了解了利用中断来串口通信的设置方法. 板子是探索版f407,本实验工程把正点原子库 ...

  7. 基于STM32的简易数码相册

    原理:在板子上插入SD卡,并使用FATFS文件系统来循环读取并显示SD卡内的指定目录内的所有BMP图片. 这是显示效果(能上传视频的话就能看到循环显示效果): 因为图片显示函数显示的是24位BMP图片 ...

  8. STM32使用FatFs

    1.定义一些变量在我们代码开始的部分,先定义一些变量供我们使用.这里选择几个来解析一下.第一个FIL file;这个变量是文件的结构体变量,记录了我们打开的文件的信息.使用f_open等函数的时候都要 ...

  9. 【python安装】Windows上安装和创建python开发环境

    1. 在 windows10 上安装python开发环境 Linux和Mac OS都自带python环境,但是Windows没有,所以需要自行安装. 第1步:访问 python官网,下载Windows ...

  10. Oracle——系统数据字典常用命令(查看表所属空间层目录等)

    发生背景: 项目前后台交互对接时候,经常存在对底层表蒙圈情况尤其是oracle数据库,所在层级不同会导致操作对象直接的改变,从而发生意向不到的事情:很多时候需要了解我们所操作对象所处的层级等相关信息, ...