我正在尝试将我的应用程序配置为访问一个 LDAP 服务器,该服务器使用 StartTLS 扩展仅监听端口 389 以确保安全。我想获取 SSL 证书的副本,以便我可以将其指定为已知证书(在 jssecacerts 文件中,因为我的应用程序是用 Java 编写的)。
如果它在端口 636 上运行,我会像这样使用 openssl:
openssl s_client -host myhost -port 636
并从输出中获取证书。
我首先尝试使用:
openssl s_client -host myhost -port 389 -starttls ...
但这不支持 LDAP 版本的 starttls。
然后,我尝试使用具有高调试级别的 ldapsearch:
ldapsearch -ZZ -h myhost -d99 ...
我可以看到在线数据包括证书,但它不是我知道如何使用的形式。
是否有通过命令行工具或短程序获取证书的简单方法? (我并不特别关心哪种语言,但 Java 是最理想的)
最佳答案
知名度全新改版InstallCert程序现在支持多种协议(protocol)的 STARTTLS,包括 LDAP。
像这样运行它:
java -jar installcert-usn-20131123.jar host_name:389
它会将证书保存在 JRE 文件树中的 jssecacerts
keystore 文件中,以及当前目录中的 extracerts
keystore 文件中。然后您可以使用 Java keytool将证书导出为其他格式。
欢迎您访问我的博客页面Yet another InstallCert for Java, now with STARTTLS support下载和说明。
关于java - 如何使用 StartTLS 获取 LDAP 服务器的 SSL 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18833524/