如何使用 StartTLS 获取 LDAP 服务器的 SSL 证书?

Eri*_*ric 5 java ssl ldap

我正在尝试将我的应用程序配置为访问仅使用 StartTLS 扩展侦听端口 389 的LDAP 服务器以确保安全。我想要获取 SSL 证书的副本,以便可以将其指定为已知证书(在 jssecacerts 文件中,因为我的应用程序是用 Java 编写的)。

如果它在端口 636 上运行,我会像这样使用 openssl:

openssl s_client -host myhost -port 636
Run Code Online (Sandbox Code Playgroud)

并从输出中获取证书。

我的第一个想法是尝试使用:

openssl s_client -host myhost -port 389 -starttls ...
Run Code Online (Sandbox Code Playgroud)

但这不支持 LDAP 版本的 starttls。

然后,我尝试使用具有高调试级别的 ldapsearch:

ldapsearch -ZZ -h myhost -d99 ...
Run Code Online (Sandbox Code Playgroud)

我可以看到无线数据包含证书,但它不是我知道如何使用的形式。

有没有一种简单的方法来获取证书,无论是通过命令行工具还是短程序?(我不太关心哪种语言,但 Java 是理想的选择)

Ser*_*kov 1

著名的InstallCert程序的新版本现在支持多种协议的 STARTTLS,其中包括 LDAP。

只需像这样运行它:

java -jar installcert-usn-20131123.jar host_name:389
Run Code Online (Sandbox Code Playgroud)

它会将证书保存在jssecacertsJRE 文件树的密钥库文件中,以及extracerts当前目录的密钥库文件中。然后,您可以使用 Java keytool将证书导出为其他格式。

欢迎您访问我的博客页面Yet another InstallCert for Java,现在支持 STARTTLS下载和说明。