Documentum REST服务 - 从Java客户端信任SSL证书



我的需求是接受来自独立java应用程序的REST Web服务URL(https:/:/dctm-rest)上启用的SSL证书>

据我所知,最好的方法是使用KeyTool创建密钥库/TrustStore,从浏览器/OpenSL下载证书,然后将其添加到TrustStore中。我们正在创建一个依赖性,并且有人必须继续更新每个续订的证书。

有人可以指导我通过删除手册依赖性来实现这一目标?

您必须将https://dctm-rest上的服务器证书包括在您的JRE(TrustStore)的白名单中

选项

1)包括JRO Trustore中的服务器证书jre/lib/security/cacerts)(不推荐

要下载服务器证书,使用浏览器打开站点,右键单击绿色锁,选择"查看证书"并下载

探索Cacerts和导入信任证书的最简单方法是使用Portecle(http://portecle.sourceforge.net/)之类的GUI工具。您也可以使用Keytool

keytool -import -trustcacerts -keystore /opt/java/jre/lib/security/cacerts -alias mycert -noprompt -storepass changeit -file /tmp/examplecert.crt

请参阅如何将自签名证书正确导入Java密钥库,默认情况下所有Java应用程序可用?

2)使用您自己的TrustStore ,并包括服务器证书(推荐

System.setProperty ("javax.net.ssl.trustStore", path_to_your_trustore_jks_file);
System.setProperty ("javax.net.ssl.trustStorePassword", "password");

您还可以创建一个sslsocketFactory,并在连接之前添加到连接或使用静态方法应用于所有连接

HttpsURLConnection.setDefaultSSLSocketFactory(sslFactory);

这是创建套接字工厂的示例

//Load JKS keystore that includes the server certificate or the root
KeyStore keyStore = ... 
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, tmf.getTrustManagers(), null);
sslFactory = ctx.getSocketFactory();

3)根本不使用TrustStore (根本不建议使用)

请参阅单个连接的禁用SSLHandShakeException(我不会复制解决方案)

最新更新