web-dev-qa-db-ja.com

無効な証明書を無視するようにHTTPBuilderに指示する簡単な方法はありますか?

docs に従って、ブラウザから証明書を手動でエクスポートし、ローカルで認識させるというかなり不格好なプロセスを実行できます。これを実用的にするために、curlの--insecureスイッチに似たものはありますか?

20
Josh Diehl

みなさん、朗報です! :-) HttpBuilderの新しいバージョン(0.7.1)でメソッドが導入されていることがわかりました。

ignoreSSLIssues()

これにより、無効なSSL証明書に関するすべての問題が解決されます(もちろん、セキュリティも低下することに注意する必要があります)。

このメソッドの詳細: https://github.com/jgritman/httpbuilder/wiki/SSL (下部のセクション)

28
lenrok258

証明書のインポートや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( ....
5
Fabiano Taioli