Java 如何使用StartTLS获取LDAP服务器的SSL证书?
为了安全起见,我正在尝试将我的应用程序配置为访问仅在端口389上侦听的LDAP服务器。我希望获得SSL证书的副本,以便将其指定为已知证书(在jssecacerts文件中,因为我的应用程序是用Java编写的) 如果它在端口636上运行,我会像这样使用openssl:Java 如何使用StartTLS获取LDAP服务器的SSL证书?,java,ssl,ldap,Java,Ssl,Ldap,为了安全起见,我正在尝试将我的应用程序配置为访问仅在端口389上侦听的LDAP服务器。我希望获得SSL证书的副本,以便将其指定为已知证书(在jssecacerts文件中,因为我的应用程序是用Java编写的) 如果它在端口636上运行,我会像这样使用openssl: openssl s_client -host myhost -port 636 并从输出中获取证书 我的第一个想法是尝试使用: openssl s_client -host myhost -port 389 -starttls ..
openssl s_client -host myhost -port 636
并从输出中获取证书
我的第一个想法是尝试使用:
openssl s_client -host myhost -port 389 -starttls ...
但它不支持starttls的LDAP版本
然后,我尝试使用高调试级别的ldapsearch:
ldapsearch -ZZ -h myhost -d99 ...
我可以看到在线数据包括证书,但它不是我知道如何使用的形式
有没有一种简单的方法可以通过命令行工具或短程序获得证书?(我并不特别关心哪种语言,但Java将是理想的语言)
SSLSession,
,从中可以获得对等证书链,从中可以获得对等证书的X509Certificate
,作为元素零Certificate.getEncoded()
以byte[]
数组的形式获取证书,将其保存到需要的任何位置。或者,您可以将其直接添加到新的或旧的密钥库
对象中并保存openssl s_client -connect remote.host:25 -starttls LDAP
该著名程序的新版本现在支持多种协议的STARTTLS,包括LDAP 就这样运行它:
java -jar installcert-usn-20131123.jar host_name:389
它会将证书保存在JRE文件树中的jssecacerts
keystore文件中,以及当前目录中的extracerts
keystore文件中。然后可以使用Java将证书导出为其他格式
欢迎您访问我的博客页面以获取下载和说明。现在,命令
openssl s_客户端-showcerts-connect ldap.hostname.domain.ext:636
适用于我的openssl版本1.0.1e-fips 2013年2月11日
(来自我的CentOS)。就像链接页面中解释的那样。