2012-07-24 14 views
17

docs uyarınca, bir tarayıcıdan elle bir cert ihracat işlemini yerel olarak tanıma ve alma konusunda oldukça karmaşık bir süreçten geçebilirsiniz. Bunu pratik yapmak için curl'in --insecure anahtarına benzer bir şey var mı?HTTPBuilder'a geçersiz bir sertifikayı yok saymasını söylemek daha kolay bir yol var mı?

+1

https://github.com/jgritman/httpbuilder/wiki/SSL (altta bölüm): http://stackoverflow.com/questions/3242335/how -to-use-ssl-ile-bir-kendini-imzalı-sertifika-in-groovy – ataylor

+0

Burada rapor edilir -> http://jira.codehaus.org/browse/GMOD-266 ama henüz bir cevap yok. – Vigneshwaran

+0

Bağlantı için teşekkürler –

cevap

25

İyi haber herkesi kesmek için bir yol bulundu!

ignoreSSLIssues() 

Bu (tabii o da güvenliğini azaltır farkında olmak zorunda) geçersiz SSL sertifikaları ile ilgili tüm sorunları çözer: :-) Sadece HttpBuilder yeni versiyonu (0.7.1) yöntemini tanıttı öğrendim. Bu yöntemle ilgili

fazla bilgi: SSL sertifikası kontrolleri atlamak için kendi güven yöneticisi ve hostname doğrulayıcı yükleyebilir

+1

Daha iyi olamazdı :) –

5

olmayan sertifikaların ithalat içeren veya 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

'new SSLSocketFactory (sslContext, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)' benim için çalışmadı, yapıcı bulunamadı. Bunu yapmak zorundaydım: 'def sf = new SSLSocketFactory (sslContext) sf.setHostnameVerifier (SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)' –

+0

Bir java.lang.VerifyError istisnası alırsanız, kodunuzu denetleyicinizden veya hizmetinizden bir groovy'ye taşıyın veya java sınıfı. Bence grails, yukarıdaki kodların bazılarıyla geliştirici çelişkilerini anlatıyor. –

+1

Hey Fabiano, verdiğiniz çözüm, GroovyConsole Sürüm 2.1.3'te (yani yeni bir sürümde) derlenmiyor. Lütfen neyin yanlış olduğunu söyler misiniz? Çok memnun olurum. – Ray

İlgili konular