2010-07-13 14 views
7

मेरे पास कुछ संसाधन हैं जो मुझे एसएसएल के साथ एक्सेस करना चाहिए जो स्वयं हस्ताक्षरित प्रमाणपत्रों का उपयोग करता है। आम तौर पर, अधिकांश उपकरणों में एक सरल सेटिंग होती है ताकि इन्हें बिना किसी त्रुटि या चेतावनी के एक्सेस किया जा सके। हालांकि, ऐसा लगता है कि JVM के साथ ऐसा करने का उचित तरीका सीए के रूप में एक कीस्टोर में हस्ताक्षर प्रमाणपत्र आयात करना है।ग्रोवी में एक स्व-हस्ताक्षरित प्रमाणपत्र के साथ एसएसएल का उपयोग कैसे करें?

मेरे पास एक ग्रोवी स्क्रिप्ट है जिसका मैं उपयोग करना चाहता हूं, लेकिन मैं अपनी स्क्रिप्ट को किसी भी जेवीएम पर स्टैंडस्टोन काम करने के लिए कुंजीस्टोर को संशोधित किए बिना या एक नया कीस्टोर वितरित करना पसंद करूंगा। प्रमाणीकरण सत्यापन को ओवरराइड करने का कोई आसान तरीका है?

उत्तर

17

अनुसंधान के एक बिट के बाद, मैं this post पाया। यहां मैं इसका उपयोग कर रहा हूं:

import javax.net.ssl.HostnameVerifier 
import javax.net.ssl.HttpsURLConnection 
import javax.net.ssl.SSLContext 
import javax.net.ssl.TrustManager 
import javax.net.ssl.X509TrustManager 

def nullTrustManager = [ 
    checkClientTrusted: { chain, authType -> }, 
    checkServerTrusted: { chain, authType -> }, 
    getAcceptedIssuers: { null } 
] 

def nullHostnameVerifier = [ 
    verify: { hostname, session -> true } 
] 

SSLContext sc = SSLContext.getInstance("SSL") 
sc.init(null, [nullTrustManager as X509TrustManager] as TrustManager[], null) 
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()) 
HttpsURLConnection.setDefaultHostnameVerifier(nullHostnameVerifier as HostnameVerifier) 

अपने जोखिम पर उपयोग करें: यह सबवर्ट प्रमाणपत्र प्रमाण पत्र!

+3

सामान्य रूप से, hvgotcodes एक बेहतर समाधान है। सचमुच में, आपका माइलेज अलग अलग हो सकता है। आपके समाधान के साथ समस्या यह है कि सभी होस्ट अब केवल मुट्ठी भर के बजाय वैध हैं जो आप वास्तव में जाने का इरादा रखते हैं। यदि आपका कोड कड़ाई से नियंत्रित है, और आप निश्चित हैं कि आप केवल "विश्वसनीय" स्रोतों से जुड़ रहे होंगे, तो आप ठीक होंगे। हालांकि, यदि आप ट्रस्टस्टोर में अपने प्रमाणपत्र आयात करते हैं तो आप DNS गलत दिशा-निर्देश और अन्य कई समस्याओं से कमजोर हैं, जिनसे आप सुरक्षित रहेंगे। यदि आप अधिक गतिशील व्यवहार करते हैं, तो आप javax.net.ssl.trustStore प्रॉपर्टी को रन टाइम पर भी सेट कर सकते हैं। –

+0

आम तौर पर, मैं सहमत हूं। लेकिन कुछ स्क्रिप्टिंग संदर्भ हैं जहां प्रमाण पत्र प्रबंधन को पूरी तरह से अनदेखा करना अच्छा होता है; उदाहरण के लिए जहां परीक्षण सर्वर गतिशील रूप से जेनरेट किए जाते हैं और ग्राहकों के कीस्टोर को लगातार समन्वयित रखना होगा। यह भी ध्यान देने योग्य है कि रूबी और पायथन जैसी अन्य गतिशील भाषाएं इसे एक सरल कॉन्फ़िगरेशन सेटिंग बनाती हैं और क्रमशः प्रमाणपत्र श्रृंखला को डिफ़ॉल्ट रूप से लागू नहीं करती हैं। – ataylor

+2

बस इसे पाठकों के लिए बोल्ड में डालने के लिए जो @ BrianM.Carr की टिप्पणी के बिना कॉपी/पेस्ट करें: ** यह समाधान प्रमाण पत्र सत्यापन चरणों को पूरी तरह से अक्षम करता है, जिससे कनेक्शन एमआईटीएम हमलों के लिए संभावित रूप से कमजोर हो जाता है **। – Bruno

7

मुझे बस एक ग्रेल्स ऐप के साथ जाना था जिस पर मैं काम कर रहा हूं। आप केवल एक बार कीस्टोर से निपटेंगे। मान लीजिए कि आपके पास प्रमाण है, बस इसे अपने कीस्टोर में डालें, फिर कमांड लाइन प्रोप के माध्यम से कीस्टोर पर अपने जेवीएम को इंगित करें ...

संपादित करें - मुझे कीस्टोर की आवश्यकता को बाईपास करने के किसी भी तरीके से नहीं पता है। लेकिन आप केवल एक प्रमाण पत्र के साथ एक बना सकते हैं जो आपको चाहिए और इसे अपने ऐप के साथ पास कर दें। आप केवल एक बार ऐसा करते हैं।

संपादित करें संपादित करें - यहाँ Keytool और जावा के लिए आदेश सीएल सहारा

keytool -import -trustcacerts -alias www.the-domain.com -file the-cert.der -keystore store.jks 

-Djavax.net.ssl.trustStore=/path/to/store.jks 
-4

आप कमांड लाइन कार्यक्रम curl के बजाय उसे कॉल देशी ग्रूवी/JVM उपकरणों का उपयोग करते हैं है, तो आप प्रमाण पत्र की जाँच अक्षम कर सकते हैं कमांड लाइन से निम्नलिखित चलाकर अपने उपयोगकर्ता के लिए:

$ echo 'insecure' >>~/.curlrc 
+1

इस पोस्ट पर मेटा पर चर्चा की गई है: http://meta.stackoverflow.com/questions/266368/why-this-post-is-not-very-low-quality –

+2

@staticx, इसके अलावा, यह विशेष रूप से असुरक्षित है क्योंकि यह ** उपयोगकर्ता ** उस उपयोगकर्ता द्वारा 'curl' का उपयोग करके किए गए कनेक्शन को प्रभावित करेगा। – Bruno

+0

@staticx हम्म, आप सही हैं, शायद यही वह सुझाव दे रहा है। संशोधित उत्तर – ataylor

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