2016-09-05 3 views
9

JConsoleなどのJMXクライアントからのTLS/SSLセキュリティ保護された接続を処理するために、デフォルトのJMXコネクタをどのように設定できるかについては、SSLを処理するJMXConnectorServerを構築する

-Dcom.sun.management.jmxremote.port=6789 \ 
-Dcom.sun.management.jmxremote.authenticate=false \ 
-Dcom.sun.management.jmxremote.ssl=true \ 
-Djavax.net.ssl.keyStore=/path/to/the/keystore.jks \ 
-Djavax.net.ssl.keyStorePassword=secr3t 

このコネクタでJConsoleを使用すると、「Secure connection failed」という警告が表示されなくなります。再試行不安? '、いくつかのユーザーが驚くべき発見(警告ではなく、その予防)。

JMXConnectorServerを構築するときにプログラムでどのように達成できるかについては、あまり詳しく説明されていません。

JMXConnectorServerFactory.newJMXConnectorServer(url, env, mBeanServerFactory); 

誰かが私の実例を参照できますか?同じことがRMIRegistryの構築にも当てはまります。私は最も感謝しなければならない。

M.

+0

プロパティ 'javax.net.ssl。*'はJMXに固有ではなく、javaの全体的なSSLインフラストラクチャに関連しています。コマンドラインからこれらの引数を渡し、プログラムでjmxサーバーを起動するか、これらのプロパティを* env *オブジェクトに入れることができます。 –

答えて

2
Properties props = new Properties(); 
props.setProperty("com.sun.management.jmxremote.authenticate", "false"); 
props.setProperty("com.sun.management.jmxremote.ssl", "true"); 
props.setProperty("com.sun.management.jmxremote.registry.ssl", "true"); 

// Either set SSL properties via System.setProperty() or load an external config file 
// props.setProperty("com.sun.management.jmxremote.ssl.config.file", 
//     "/path/to/ssl.properties"); 

System.setProperty("javax.net.ssl.keyStore", "/path/to/the/keystore.jks"); 
System.setProperty("javax.net.ssl.keyStorePassword", "secr3t"); 

JMXConnectorServer server = sun.management.jmxremote.ConnectorBootstrap 
     .startRemoteConnectorServer("6789", props); 

これは、プログラムでSSL対応のJMXConnectorServerを開始する最も簡単な方法です。プライベートsun.management APIに依存しています。プライベートAPIなしでこれを行うこともできますが、多くの場合、ConnectorBootstrapロジックを複製する必要があります。

関連する問題