2012-07-24 6 views
17

docsによれば、ブラウザから証明書を手動でエクスポートし、ローカルで認識させるという、かなり厄介なプロセスを経ることができます。これを実用的にするために、カールの--insecureスイッチに類似したものはありますか?無効な証明書を無視するようにHTTPBuilderに指示する簡単な方法はありますか?

+1

https://github.com/jgritman/httpbuilder/wiki/SSL(下部のセクション):http://stackoverflow.com/questions/3242335/how -to-use-ssl-with-a-self-signed-certificate-in-groovy – ataylor

+0

ここに報告されています - > http://jira.codehaus.org/browse/GMOD-266ですが、まだ回答はありません。 – Vigneshwaran

+0

リンクをありがとうございます。 –

答えて

25

グッドニュースみんなのハッキング方法を発見します!

​​

これは、無効なSSL証明書(もちろん、あなたが、それはまた、セキュリティを低下させることに注意する必要がある)に関するすべての問題を解決します:-) ただHttpBuilderの新バージョン(0.7.1)はメソッドを導入していることが分かりました。この方法について

詳細情報:あなたは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例外が発生した場合は、コントローラまたはサービスのコードをGroovyまたはjavaクラス。私は、上記のコードのいくつかとGrailsのエンジニアがエンハンサと競合していると思います。 –

+1

あなたが与えた解決策は、GroovyConsoleバージョン2.1.3(つまり最近のバージョン)ではコンパイルされません。何が間違っているのかを教えてください/修正を提供しますか?大変感謝しています。 – Ray

関連する問題