HTTPS-запись Betamax с прокси-сервером - ошибка сертификата - Java Groovy
Я не могу заставить HTTPS URL работать с betamax.
Это похоже на другую проблему, опубликованную ниже, однако я уже выполнил импорт файла betamax.pem, и, похоже, он не имел никакого эффекта:
Вот команда импорта, которую я выполнил:
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 не может записывать трафик HTTPS
1 ответ
Таким образом, ответ на этот вопрос заключается в том, что HTTPBuilder не учитывает автоматическое перенаправление на прокси, реализованное Betamax. Это задокументировано в документации по betamax.software, которую я, похоже, неправильно понял. Чтобы работать с HTTPBuilder (или его производным от RESTClient), просто установите хост / порт прокси на httpclient вручную на 127.0.0.1/5555 соответственно. При использовании HTTP-клиента, который учитывает настройку прокси-сервера JVM, он работает без проблем.
Стоит также отметить, что сообщение об ошибке вводило в заблуждение. При использовании RESTClient, это, кажется, указывает на проблему в сертификате, которая заставила меня потратить целый день, пытаясь выяснить, почему он не видит сертификат betamax в хранилище сертификатов. Однако с сертификатом проблем не возникало, он был исправлен только путем ручной настройки прокси.