groovy httpbuilder

groovy - ¿Hay una manera más fácil de decirle a HTTPBuilder que ignore un certificado inválido?



(2)

¡Buenas noticias para todos! :-) Acabo de descubrir que la nueva versión (0.7.1) de HttpBuilder introduce el método:

ignoreSSLIssues()

Esto soluciona todos los problemas relacionados con los certificados SSL no válidos (por supuesto, debe tener en cuenta que también reduce la seguridad).

Más información sobre este método: https://github.com/jgritman/httpbuilder/wiki/SSL (sección en la parte inferior)

De acuerdo con los docs , puede realizar un proceso bastante pesado para exportar un certificado manualmente desde un navegador y obtener el reconocimiento local. ¿Hay algo similar al interruptor de - --insecure de --insecure para que esto sea práctico?


Encontró una manera que no involucra la importación de certificados o hacks de 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( ....