2016-09-05 19 views
9

को संभालता है यह अच्छी तरह से दस्तावेज है कि जेएमएक्स क्लाइंट जैसे जेएमएक्स क्लाइंट से टीएलएस/एसएसएल सुरक्षित कनेक्शन को संभालने के लिए डिफ़ॉल्ट जेएमएक्स कनेक्टर को कैसे कॉन्फ़िगर किया जा सकता है, उदा।एक जेएमएक्स कनेक्टर सर्वर का निर्माण जो एसएसएल

-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 

इस कनेक्टर के साथ जेकनसोल का उपयोग करते समय यह चेतावनी को रोकता है 'सुरक्षित कनेक्शन विफल। असुरक्षित रूप से पुनः प्रयास करें? ', जो कुछ उपयोगकर्ताओं को चौंकाने वाला लगता है (चेतावनी, इसकी रोकथाम नहीं)।

यह कम अच्छी तरह से प्रलेखित है कि JMXConnectorServer बनाने के दौरान प्रोग्रामेटिक रूप से इसे कैसे प्राप्त किया जा सकता है, उदाहरण के लिए

JMXConnectorServerFactory.newJMXConnectorServer(url, env, mBeanServerFactory); 

क्या कोई मुझे एक सिद्ध उदाहरण के लिए संदर्भित कर सकता है? RMIRegistry बनाने के लिए भी यही लागू होता है। मुझे सबसे आभारी होना चाहिए।

एम

+0

गुण 'javax.net.ssl। * 'जेएमएक्स के लिए विशिष्ट नहीं हैं, लेकिन जावा के समग्र एसएसएल बुनियादी ढांचे से संबंधित हैं। आप इन तर्कों को कमांड लाइन से पास कर सकते हैं और जेएमएक्स सर्वर प्रोग्रामेटिक रूप से शुरू कर सकते हैं या आप इन गुणों को * 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); 

यह सबसे आसान तरीका है एसएसएल-अवगत JMXConnectorServer प्रोग्राम के रूप में शुरू करने के लिए है। यह एक निजी sun.management एपीआई पर निर्भर करता है। आप इसे निजी एपीआई के बिना भी कर सकते हैं, लेकिन आपको ConnectorBootstrap तर्क का दोहराना होगा।

संबंधित मुद्दे