2016-12-22 3 views
0

Auch wenn ignoreSSLIssues() verwendet wird, ist ein Spring Boot Actuator/Health-Endpunkt nicht verfügbar, da die Route des Dienstes von http zu https gewechselt wurde.Groovy HTTPBuilder erhält Service für SSL-Endpunkt nicht verfügbar

Ich habe dieses Muster erfolgreich auf anderen SSL-Endpunkten verwendet. Warum erhält dieser Service nicht verfügbar? Die gleiche URL ist im Browser verfügbar.

def url = "https://some.service.company.com" 
def client = new HTTPBuilder(url) 
client.ignoreSSLIssues() 
def json = client.get(path: "/health") 
println json 

groovyx.net.http.HttpResponseException: Dienst nicht verfügbar

+0

Sieht aus wie das Problem zu TLS Server Name Pass oder (SNI) verwandt ist. Keine Ahnung ob der Groovy HTTPBuilder das richtig handhabt? –

Antwort

0

Vorerst musste ich nur Apache HTTP-Client-Bibliothek verwenden, da es den TLS Server Namen Pass oder (SNI) Griffe, die vielleicht Groovy HTTPBuilder nicht oder ich konnte nicht finden, wie ich es dazu bringen könnte.

Hier ist, wie ich zwangsläufig (grob) die gleiche Sache über SSL mit Apache HTTP-Client erreicht:

SSLContextBuilder builder = new SSLContextBuilder() 
    def trustAll = [isTrusted: { X509Certificate[] cert, String s -> true } 
    ] as TrustStrategy 
    builder.loadTrustMaterial(null, trustAll) 
    def factory = new SSLConnectionSocketFactory(builder.build()) 
    def httpClient = HttpClients.custom().setSSLSocketFactory(factory).build() 

    String url = "https://some.service.com/health" 
    HttpGet getRequest = new HttpGet(url) 
    HttpResponse response = httpClient.execute(getRequest) 
Verwandte Themen