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ı?
cevap
İ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
Daha iyi olamazdı :) –
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(....
'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)' –
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. –
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
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
Burada rapor edilir -> http://jira.codehaus.org/browse/GMOD-266 ama henüz bir cevap yok. – Vigneshwaran
Bağlantı için teşekkürler –