我有一些代码,使用 JMX 协议但没有 SSL 连接到代理。我进行了代理设置,以便它通过 SSL 工作,但是如何在使用 JMX 的应用程序中附加证书?
配置来自
broker.xml
:
<acceptor name="main-connector">tcp://localhost:61617?tcpSendBufferSize=1048576;amqpMinLargeMessageSize=102400;tcpReceiveBufferSize=1048576;sslEnabled=true;keyStorePath=keystore_server.jks;trustStorePath=truststore_server.jks;keyStorePassword=qwerty;trustStorePassword=qwerty;needClientAuth=true;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;enabledCipherSuites=TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA;enabledProtocols=TLSv1.3,TLSv1.2</acceptor>
我的经纪商文件夹的结构:
我通过 JMX 连接的代码:
public static MBeanServerConnection connectBroker(String brokerUrl, String login, String password) {
MBeanServerConnection mBeanServerConnection = null;
try {
Map<String, String[]> env = new HashMap();
String[] creds = {login, password};
env.put(JMXConnector.CREDENTIALS, creds);
JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + brokerUrl + "/jmxrmi"), env);
mBeanServerConnection = connector.getMBeanServerConnection();
DialogsAlert.brokerJmxRmiConnectionSuccess.showAndWait();
LOGGER.log(Level.INFO,"success" + brokerUrl);
} catch (Exception e) {
LOGGER.log(Level.WARNING,"fail", e);
}
return mBeanServerConnection;
}
我真的不明白如何封装我的密钥库。
代理配置的第一个问题是broker.xml
中
未配置JMX连接。它是在
management.xml
中配置的,如文档中所述。请记住,JMX 和 JMS 连接完全不同。 JMS 用于消息传递,JMX 用于管理。
可以使用以下系统属性在 JMX 客户端应用程序上配置 SSL 参数:
javax.net.ssl.keyStore
javax.net.ssl.keyStoreType
javax.net.ssl.keyStorePassword
javax.net.ssl.trustStore
javax.net.ssl.trustStoreType
javax.net.ssl.trustStorePassword
更多详细信息请参阅 Java 文档。