我创建了一个Spring Boot应用程序,它实例化了ActiveMQSSLBroker的一个实例。我试图使用HermesJMS作为客户端连接到此代理。
我在Hermes中配置了连接工厂,如下所示:
代理在spring-boot应用程序中的配置如下:
javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
原来是用户错误。我配置了几个不同的会话,在IDE和Hermes之间来回切换时,不知何故,我最终测试了一个使用错误连接工厂的会话。
切换到正确的会话后,事情开始奏效了。
为了完整起见,这里是我如何工作的:
@Bean
public BrokerService broker(
@Value("${spring.activemq.broker-url}") String brokerUrl,
@Qualifier("brokerTrustManagerFactory") TrustManagerFactory trustManagerFactory,
@Qualifier("brokerKeyManagerFactory") KeyManagerFactory keyManagerFactory,
@Qualifier("secureRandom") SecureRandom secureRandom
){
SslBrokerService brokerService = new SslBrokerService();
brokerService.addSslConnector(
brokerUrl,
keyManagerFactory.getKeyManagers(),
trustManagerFactory.getTrustManagers(),
secureRandom
);
return brokerService;
}
@Bean
ConnectionFactory connectionFactory(
@Value("${spring.activemq.broker-url}") String brokerUrl,
@Value("${spring.activemq.trustStorePath}") String trustStorePath,
@Value("${spring.activemq.trustStorePass}") String trustStorePass,
@Value("${spring.activemq.keyStorePath}") String keyStorePath,
@Value("${spring.activemq.keyStorePass}") String keyStorePass,
@Value("${client.key.pass}") String clientKeyPass
) {
ActiveMQSslConnectionFactory connectionFactory =
new ActiveMQSslConnectionFactory(brokerUrl);
connectionFactory.setTrustStore(trustStorePath);
connectionFactory.setTrustStorePassword(trustStorePass);
connectionFactory.setTrustStoreType("PKCS12");
connectionFactory.setKeyStore(keyStorePath);
connectionFactory.setKeyStorePassword(keyStorePass);
connectionFactory.setKeyStoreKeyPassword(clientKeyPass);
connectionFactory.setKeyStoreType("PKCS12");
return connectionFactory;
}
谢谢,戴夫
问题内容: 我正在使用Java 6,并尝试使用客户端证书针对远程服务器创建一个。 服务器正在使用自签名的根证书,并且要求提供受密码保护的客户端证书。我已将服务器根证书和客户端证书添加到在中找到的默认Java密钥库中。密钥库文件的名称似乎表明不应将客户端证书放入其中? 无论如何,将根证书添加到此存储解决了臭名昭著的问题 但是,我现在停留在如何使用客户端证书上。我尝试了两种方法,但都无济于事。 首先,
我创建了一个具有双向SSL认证的Spring Boot 2应用程序。 简而言之,它归结为以下配置: 该应用程序具有密钥库/信任库,可以与导入的客户端证书一起正常工作。 出乎意料的是,如果我尝试与未知客户端证书连接,由于SSL握手失败,连接无法建立 然而,我希望即使证书不被接受,也能到达应用层,并用应用程序的HTTP响应进行响应。 有没有办法做到这一点?
我试图通过Psycopg2连接到AWS postgresql RDS。当我将安全组的入站规则设置为通过端口5432上的postgresql接受所有通信量时,我就可以连接了。 但是,当我将此端口上的postgresql入站规则限制为只接受来自客户端IP的通信量时,我无法连接并超时。我得到了错误: psycopg2.operationalerror:无法连接到服务器:连接超时服务器是否运行在主机“[h
问题内容: 我正在尝试建立与trackobot.com的连接以接收一些JSON数据。服务器仅允许通过HTTPS / SSL进行连接。这是代码: openSteam抛出javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure 我通读了与类似问题有关的几篇文章,但没有任何建议可以帮助您。适当的证书在我的信任库中。例如,当我尝试连接到goo
我想向Hybris的不同客户群展示产品的不同价格。如何通过弹劾来实现这一点?