zoukankan      html  css  js  c++  java
  • 在Windows上启用LDAPs

    公司的环境比较特殊, Windows server + Linux desktop, 所以我们希望在server端启用LDAP over SSL功能. 当中走了不少弯路, 网上文章也搜了一大堆, 千辛万苦终于搞定, 现在把过程记录下来.

    域控制器: 基于Win2012R2, 搭建这个没什么难度所以过程省略. 

    证书服务器: Windows CA --> Ubuntu Server + OpenSSL --> Ubuntu Desktop + gnoMint, Windows CA太庞大, OpenSSL待研究, gnoMint简单方便

    客户机: Ubuntu

    先说说那些走过的弯路: 根据微软的KB生成证书请求文件, 再去OpenSSl里生成CA, 然后私钥公钥签发等等, 再将生成的证书导入到域控, 可惜始终无法成功.

    后来干脆放弃命令行的OpenSSL, 使用了具有图形界面的gonMint. 步骤其实也很简单, 首先Add an autosigned CA, 然后Add a new certificate signing request (所以无需按照微软KB的格式生成证书请求文件), 这样就生成了根证书和它为域控签发的证书, 分别导出为cer和pfx格式. 

    将这两张证书导入域控, 其中根证书导入红色框, 域控证书导入蓝色框.

    导入之后即可使用LDP.exe工具通过Port#636连接(注意: 连接时的服务器名必须和证书签发时的CN名一致)

    ld = ldap_sslinit("DC1.ABC.LOCAL", 636, 1);
    Error 0 = ldap_set_option(hLdap, LDAP_OPT_PROTOCOL_VERSION, 3);
    Error 0 = ldap_connect(hLdap, NULL);
    Error 0 = ldap_get_option(hLdap,LDAP_OPT_SSL,(void*)&lv);
    Host supports SSL, SSL cipher strength = 256 bits
    Established connection to DC1.ABC.LOCAL.
    Retrieving base DSA information...
    Getting 1 entries:
    以下省略
    -----------

    对于希望从Linux客户端上通过ldapsearch命令查询的需求, 需要改动的地方稍微有点多.

    1. vi /etc/ldap/ldap.conf 加入以下行:

    HOST DC1.ABC.LOCAL
    PORT 636
    TLS_CACERT      /home/chen/ca.crt         ##指定根证书的路径

    2. ldapsearch -x -LLL -D 'CN=administrator,CN=Users,DC=abc,DC=local' -W -H ldaps://DC1.ABC.LOCAL -b 'OU=vb-user,DC=abc,DC=local'

    2015-8-13更新:

    我们发现用gnoMint生成的证书, 所使用的签名算法是SHA1, 而且还无法更改. 但是这个算法即将被Google抛弃, 故在Chrome中依旧会显示为不安全连接. 所以我们准备使用openssl命令生成证书, 但是得到的证书死活无法成功使用LDAPs, 经过大半天的研究终于找到原因, 现记录如下:

    左图是默认使用openssl导出的证书, 右边是修改了/etc/ssl/openssl.cnf参数的, 其中多了一项“增强型密钥用法”, 也就是微软KB文档中的 OID=1.3.6.1.5.5.7.3.1

     具体修改的地方是[ usr_cert ]下面的extendedKeyUsage属性 (注意字母K和U为大写),将其设置为1.3.6.1.5.5.7.3.1即可。

    2015-8-14更新:

    还有个简单的办法, 就是使用图形化界面的tinyCA, 但是不知道为何在Ubuntu下没有SHA-256的加密算法(https://github.com/pld-linux/tinyca/blob/master/tinyca-sha2.patch), CentOS下却有.

    参考网站:

    https://support.microsoft.com/en-us/kb/321051

    http://virtuallyhyper.com/2013/06/enabling-ldaps-on-windows-2008-active-directory-server/

    https://www.digicert.com/ssl-certificate-installation-microsoft-active-directory-ldap-2012.htm

    https://forums.opensuse.org/showthread.php/401522-Performing-ldapsearch-over-TLS-SSL-against-Active-Directory

    http://serverfault.com/questions/571910/how-to-add-extended-key-usage-string-when-generating-a-self-signed-certificate-u

    https://www.openssl.org/docs/manmaster/apps/x509v3_config.html

  • 相关阅读:
    apache性能测试工具ab
    MyBatis
    微信小程序时间戳的转换及调用
    关于微信里wx.getUserInfo获取用户信息都是拼音的转成中文方法
    CSS斜切角
    css hsla和rgba的区别
    js中 onreadystatechange 和 onload的区别
    HTML5语音合成Speech Synthesis API简介
    position inherit 定位
    CSS3选择器:nth-child和:nth-of-type之间的差异
  • 原文地址:https://www.cnblogs.com/IvanChen/p/4689230.html
Copyright © 2011-2022 走看看