【发布时间】:2023-03-15 12:27:01
【问题描述】:
我有一个项目,它使用 Spring Integration 通过 TCP 与我的客户端进行通信。我的客户要求我在此 TCP 通信中使用 SSL。当我尝试通过 SSL 建立 TCP 连接时,出现 No subject Alternative names present 错误。
我添加了这个代码块来绕过检查:
import org.springframework.integration.ip.tcp.connection.DefaultTcpSSLContextSupport;
import javax.net.ssl.*;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
public class CustomTCPSSLContextSupport extends DefaultTcpSSLContextSupport {
public CustomTCPSSLContextSupport(String keyStore, String trustStore, String keyStorePassword, String trustStorePassword) {
super(keyStore, trustStore, keyStorePassword, trustStorePassword);
}
@Override
public SSLContext getSSLContext() throws NoSuchAlgorithmException, KeyManagementException {
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
return sc;
}
}
我是这样定义的:
<bean id="sslContextSupport" class="CustomTCPSSLContextSupport">
<constructor-arg value="${keystore.path}"/>
<constructor-arg value="${cacerts.path}"/>
<constructor-arg value="changeit"/>
<constructor-arg value="changeit"/>
</bean>
我在我的 tcp-connection-factory 中将此 sslContextSupport 用作 ssl-context-support 但没有影响。它仍然给出同样的错误。
如何在 Spring Integration 中完全绕过主题替代检查?
【问题讨论】:
标签: spring ssl tcp spring-integration