2016-09-03 8 views
0

HTTPS URLがbetamaxで動作することができません。Betamax HTTPSプロキシでの記録 - 証明書エラー - Java Groovy

それは以下の投稿この他の問題は、しかし、私はすでにbetamax.pemファイルのインポートを行ってきたし、効果がなかったしているようだと似ています:ここで私は走ったimportコマンドだ

c:\Users\UserAccount>"%JAVA_HOME%/bin/keytool.exe" -importcert -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -file betamax.pem -alias betamax -storepass changeit -noprompt

static final File TAPES = 
    new File(System.getProperty('BETAMAX_TAPEDIR') ?: 
     'src/integrationTest/resources/betamax/tapes') 

    static final TapeMode TAPEMODE = 
    System.getProperty('BETAMAX_MAKETAPES') ? 
     TapeMode.READ_WRITE : 
     TapeMode.READ_ONLY 

    static final Integer PROXYPORT = 
    System.getProperty('BETAMAX_PROXYPORT') ? 
     System.getProperty('BETAMAX_PROXYPORT').toInteger() : 
     Configuration.DEFAULT_PROXY_PORT 

    @Shared 
    Configuration configuration = Configuration.builder() 
      .tapeRoot(TAPES) 
      .ignoreLocalhost(false) 
      .defaultMode(TAPEMODE) 
      .proxyPort(PROXYPORT) 
      .sslEnabled(true) 
      .build() 

    @Rule 
    RecorderRule recorder = new RecorderRule(configuration) 

    @Betamax(tape='GradleNews.tape') 
    def "Try record HTTPS"() 
    { 
     when: 
     def http = new RESTClient('https://discuss.gradle.org') 
     http.head path: 'c/books-articles' 

     then: 
     true 
    } 

生成します:

ここ

は私の設定です
javax.net.ssl.SSLException: hostname in certificate didn't match: <discuss.gradle.org> != <*.discourse.org> OR <*.discourse.org> OR <discourse.org> 

誰かが間違っているのを誰でも見ることができますか?ここで

は、同様の問題のレポートです:要約すると Betamax fails to record HTTPS traffic

+0

どのバージョンをお使いですか? –

+0

サイドノート:私は 'System.getProperty( 'BETAMAX_MAKETAPES')'が本当に好きです。それはかわいいと効果的です:) –

+0

これはBetamaxのバグのようです。 https://discuss.gradle.orgのダウンロードを行うと、正しくテープに保存されているように見えます。しかし、 'discourse.org'の証明書を解決しようとする際に例外を見ると、RESTClientが適切にMITMをインストールしていないという形でdiscourse.orgを探していることがわかります。どのRESTClientを使用していますか? –

答えて

0

、これに対する答えはHTTPBuilderはベータマックスで実装プロキシへの自動リダイレクトを尊重していないということです。これは、私が誤解しているように見えるbetamax.softwareのドキュメントに記載されています。 HTTPBuilder(またはRESTClientの派生物)を操作するには、httpclientのプロキシー・ホスト/ポートを手動で127.0.0.1/5555にそれぞれ設定します。 JVMプロキシ設定を尊重するHTTPクライアントを使用する場合、シームレスに動作するようです。

エラーメッセージが非常に誤解を招くことにも注意してください。 RESTClientを使用すると、証明書の問題を指摘するように見えます。なぜなら、証明書ストアにbetamax証明書が表示されていない理由を理解しようとしていました。しかし、証明書に問題はなく、純粋にプロキシを手動で設定することで修正されました。

関連する問題