Действительный сертификат SSL, но Groovy дает: javax.net.ssl.SSLPeerUnverifiedException: узел не аутентифицирован
Я уже пытался использовать http.ignoreSSLIssues()
чтобы скрипт игнорировал проблему.
Я уже пытался импортировать сертификат в доверенное хранилище ключей, а затем использовать это хранилище ключей для создания нового SSLSocketFactory в соответствии с инструкциями вики-страницы http-builder.
Я уже пытался установить банки с неограниченной политикой безопасности.
HTTPBuilder http = new HTTPBuilder("${host}${path}")
println("Fetching ${host}${path}")
println("Supposedly ignoring SSL issues")
http.ignoreSSLIssues()
def keyStore = KeyStore.getInstance( KeyStore.defaultType )
getClass().getResource( "truststore.jks" ).withInputStream {
keyStore.load( it, "test1234".toCharArray() )
println("Loaded keystore")
}
http.client.connectionManager.schemeRegistry.register(new Scheme("https", 443, new SSLSocketFactory(keyStore)) )
println("Loaded new socket factory with keystore")
http.request( Method.GET, ContentType.URLENC ) { req ->
uri.query = params
response.contentType = ContentType.JSON
response.success = { resp, Map map ->
def json = map.keySet()[0]
def slurper = new JsonSlurper()
ret = slurper.parseText(json)
}
}
И все же я получаю одно и то же исключение SSLPeerUnverifiedException каждый раз. Вот вывод консоли:
Fetching https://myhost.mydomain.com/report.aspx
Supposedly ignoring SSL issues
Loaded keystore
Loaded new socket factory with keystore
Caught: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:572)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:1066)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:1044)
at groovyx.net.http.HTTPBuilder.doRequest(HTTPBuilder.java:515)
at groovyx.net.http.HTTPBuilder.doRequest(HTTPBuilder.java:434)
at groovyx.net.http.HTTPBuilder.request(HTTPBuilder.java:383)
at groovyx.net.http.HTTPBuilder$request$0.call(Unknown Source)
at fetch_windows_direct_report.httpget(fetch_windows_direct_report.groovy:93)
at fetch_windows_direct_report$httpget$0.callCurrent(Unknown Source)
at fetch_windows_direct_report.fetchanalytics(fetch_windows_direct_report.groovy:58)
at fetch_windows_direct_report$fetchanalytics.callCurrent(Unknown Source)
at fetch_windows_direct_report.run(fetch_windows_direct_report.groovy:31)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Process finished with exit code 1
Строка 93, где мой код испытывает исключение, является http.request( Method.GET, ContentType.URLENC ) { req ->
линия.
Я подтвердил, что мой сертификат SSL действителен и подписан доверенным корневым центром с помощью Chrome (а также с использованием https://www.sslshopper.com/ssl-checker.html).
Я не понимаю, почему это не работает. Пожалуйста помоги!