4

我正在尝试将我的应用程序配置为使用 StartTLS 扩展访问仅在端口 389 上侦听的 LDAP 服务器以确保安全。我想获取 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 会是理想的)

4

3 回答 3

1

众所周知的InstallCert程序的新版本现在支持多种协议的 STARTTLS,包括 LDAP。

像这样运行它:

java -jar installcert-usn-20131123.jar host_name:389

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

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

于 2013-11-28T06:33:13.210 回答
0
  1. 使用顶部的示例代码,按照Javadoc中的说明进行连接。

  2. 这为您提供了SSLSession,可以从中获取对等证书链的 ,您可以从中获取对等证书链X509Certificate作为元素零。

  3. 然后将其保存在您需要的任何地方,Certificate.getEncoded()用于将证书作为byte[]数组获取。或者您可以直接将其添加到新对象或旧KeyStore对象并保存。

于 2013-09-17T01:25:43.883 回答
0

我们已经记录了一些不同的方法

是的,我上次看的 openSSL 仍然没有能力使用 LDAP ptotocol for starttls 选项。它应该是这样的:

openssl s_client -connect remote.host:25 -starttls LDAP
于 2013-09-17T10:49:03.520 回答