java - 具有 SSL 和自签名证书的 ActiveMQ;不包含正确证书的客户端能够连接到代理

标签 java ssl activemq self-signed-certificate

我有一些自签名证书,可以通过 ActiveMQ 和几个 Java 客户端使用 SSL/TLS。 代理 keystore 包含根证书代理信任库包含客户端的公钥客户端 keystore 包含根据 keystore 的要求捆绑到 PKCS12 文件中的客户端公钥和私钥,并且客户端信任库包含<强>根证书

现在,这个配置工作正常。我的问题是,即使我使用不匹配的客户端证书和 key ,但在代理和客户端上保留相同的根证书,它也能正常工作。 仅当我使用不匹配的根证书时,代理客户端连接才会失败。 我想知道为什么会发生这种情况以及解决方法是什么,以便阻止使用任何其公钥不在代理的信任库中的随 secret 钥对的客户端连接到代理。

附注:这是在 ActiveMQ 版本 5.13.0 和 TLS 版本 1.2 上的

最佳答案

它在维基中:https://cwiki.apache.org/confluence/display/ACTIVEMQ/How+do+I+use+SSL

您需要在服务器端transportConnector中添加needClientAuth=true:

<broker>
  ...
  <transportConnectors>
    <transportConnector name="ssl" uri="ssl://0.0.0.0:61616?needClientAuth=true"/>  
  </<transportConnectors>

要求客户端身份验证不是标准设置。通常,SSL 传输仅使用服务器证书进行设置,客户端使用用户名/密码身份验证。

客户端身份验证不提供任何额外的加密。它是用户名/密码的替代方案,但需要更高的维护:证书续订等。

关于java - 具有 SSL 和自签名证书的 ActiveMQ;不包含正确证书的客户端能够连接到代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62449847/

相关文章:

iphone - iOS 4.3 网络连接丢失

java - ActiveMQ 所有连接的默认 RedeliveryPolicy.maximumRedeliveries 配置

java - Spring Security - 身份验证失败 - 空白消息

java - Gson 类中的VerifyError

email - Plesk 发送电子邮件 TLS 不可用

java - WSO2 ESB 无法调用 ActiveMQ

php - ActiveMQ/PHP Stomp 使用 TextMessage 而不是 BytesMessage

Java字符串用评估的键替换正则表达式模式

java - 如何给maven项目添加依赖? (如何从外部jar文件中查找GroupID/ArtifactID)

tomcat - HTTPS 通信失败,jdk 1.6(32 位客户端)与 jdk 1.8(64 位)服务器 : READ: Unknown-3. 3 警报,长度 = 2