エンタープライズアプリケーションへのサポートJMXの追加に多くの努力を費やしました。 JMXはSQLによるSSLとクライアント認証を使用する必要があります。それは問題ではありません。 私はSSLを有効にするためにシステムプロパティを使用しています。 システムプロパティはJVMに対してグローバルです。特に大規模なアプリケーションでは、別の構成方法が利用できない場合に、迅速に競合が発生する可能性があります。システムプロパティを使用しないSSLを使用したJMX
特に、大規模なエンタープライズアプリケーションでは、異なる証明書を必要とするさまざまなサービス、特に自動証明書選択に関する制限があるため、必要に応じて柔軟なコードを使用してこれにフックする方法が必要です。 残念ながら、JMXとRMIは現在、システムプロパティまたはデフォルトのソケットファクトリにのみ依存するフックを提供していません。
システムプロパティを使用しないでSSLを使用してJMXを作成する方法はありますか?
編集:SslRMIClientSocketFactoryを使用して
は動作しませんでした。
// System.setProperty("java.rmi.server.randomIDs", "true");
// System.setProperty("javax.net.ssl.keyStore", keystore);
// System.setProperty("javax.net.ssl.keyStorePassword",
// "password");
// SSL-based RMI socket factories.
SslRMIClientSocketFactory csf = new SslRMIClientSocketFactory();
SslRMIServerSocketFactory ssf = new SslRMIServerSocketFactory();
map.put(RMIConnectorServer.RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE, csf);
map.put(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE, ssf);
例外:
java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:304)
結果:java.rmi.ConnectIOException。私の下の編集を見てください。 – Benni
パラメータなしのctorではなく、SSLファクトリに構成を提供する必要があります。 – Nicholas