2012-07-24 11 views
17

docs प्रति, आप एक ब्राउज़र से मैन्युअल रूप से एक प्रमाणपत्र निर्यात करने और इसे स्थानीय रूप से मान्यता प्राप्त करने की बजाय एक बदसूरत प्रक्रिया के माध्यम से जा सकते हैं। क्या यह व्यावहारिक बनाने के लिए कर्ल के --insecure स्विच के समान कुछ भी है?क्या एक अवैध प्रमाणपत्र को अनदेखा करने के लिए HTTPBuilder को बताने का कोई आसान तरीका है?

+1

आप SSL प्रमाणपत्र चेकों को छोड़ने के लिए अपने स्वयं के विश्वास प्रबंधक और होस्ट नाम सत्यापनकर्ता स्थापित कर सकते हैं: http://stackoverflow.com/questions/3242335/how -to-use-ssl-with-a-self-sign-cert-in-groovy – ataylor

+0

यह यहां बताया गया है -> http://jira.codehaus.org/browse/GMOD-266 लेकिन अभी तक कोई प्रतिक्रिया नहीं है। – Vigneshwaran

+0

लिंक –

उत्तर

25

अच्छी खबर हर किसी को हैक करता मिला! :-) बस पता चला HttpBuilder के नए संस्करण (0.7.1) का परिचय है कि विधि:

ignoreSSLIssues() 

यह अमान्य SSL प्रमाणपत्र के बारे में (जाहिर है कि आप जानते यह भी सुरक्षा कम हो जाती है कि होना चाहिए) सभी समस्याओं को हल करती है। इस विधि के बारे

अधिक जानकारी: https://github.com/jgritman/httpbuilder/wiki/SSL (नीचे अनुभाग)

+1

बेहतर नहीं हो सका :) –

5

एक तरीका है कि गैर प्रमाण पत्र के आयात को शामिल या httpbuilder

//== HTTPBUILDER IMPORTS 
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.0-RC2') 
import groovyx.net.http.* 
import static groovyx.net.http.ContentType.* 
import static groovyx.net.http.Method.* 
//== END HTTPBUILDER IMPORTS 

import javax.net.ssl.X509TrustManager 
import javax.net.ssl.SSLContext 
import java.security.cert.X509Certificate 
import javax.net.ssl.TrustManager 
import java.security.SecureRandom 
import org.apache.http.conn.ssl.SSLSocketFactory 
import org.apache.http.conn.scheme.Scheme 
import org.apache.http.conn.scheme.SchemeRegistry 

def http = new HTTPBuilder("https://your_unsecure_certificate_host") 

    //=== SSL UNSECURE CERTIFICATE === 
    def sslContext = SSLContext.getInstance("SSL")    
    sslContext.init(null, [ new X509TrustManager() {public X509Certificate[] 
    getAcceptedIssuers() {null } 
    public void checkClientTrusted(X509Certificate[] certs, String authType) { } 
    public void checkServerTrusted(X509Certificate[] certs, String authType) { } 
    } ] as TrustManager[], new SecureRandom()) 
    def sf = new SSLSocketFactory(sslContext, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER) 
    def httpsScheme = new Scheme("https", sf, 443) 
    http.client.connectionManager.schemeRegistry.register(httpsScheme) 
    //================================ 

//do your http call with the http object 
http.request(.... 
+0

'नया SSLSocketFactory (sslContext, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER) के लिए धन्यवाद, मेरे लिए काम नहीं किया, निर्माता नहीं मिला। मुझे यह करना था: 'def sf = new SSLSocketFactory (sslContext) sf.setHostnameVerifier (SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER) ' –

+0

यदि आपको java.lang.VerifyError अपवाद मिलता है तो कोड को अपने नियंत्रक या सेवा से ग्रोवी में स्थानांतरित करने का प्रयास करें या जावा क्लास मुझे लगता है कि उपरोक्त कोड में से कुछ के साथ grails artificats confancer confancer। –

+1

हे फैबियानो, आपके द्वारा दिया गया समाधान ग्रोवी कंसोल संस्करण 2.1.3 (यानी एक हालिया संस्करण) में संकलित नहीं है। क्या आप कृपया मुझे बताएं कि क्या गलत है/एक फिक्स प्रदान करें? बहुत सराहना की जाएगी। – Ray

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

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