2017-11-14 3 views
0

Ich bin nicht so in WSO2 ESB und ich habe folgende Zweifel.Wie kann ich eine WSO2 ESB API korrekt erstellen, die HTTPS anstelle von HTTP als Protokoll verwendet?

Ich habe auf meinem Carbon-Server einige APIs eingesetzt, das funktioniert gut.

Diese APIs verwenden HTTP als Protokoll. Aus irgendeinem Grund muss ich es in HTTPS ändern.

Mein doubs ist: Ich habe nur das Protokoll ändern Attribut (der Ressource-Tag) Wert Form http zu https?

<?xml version="1.0" encoding="UTF-8"?> 
<api context="/meteo_forecast_weekly_v2/location" name="meteo_forecast_weekly_v2" xmlns="http://ws.apache.org/ns/synapse"> 
    <resource methods="GET" protocol="http" uri-template="/{localizationId}"> 
     ............................................................... 
     ............................................................... 
     ............................................................... 

Oder muss ich auch ein Zertifikat in meinem Carbon Server konfigurieren?

EDIT-1: I tryied von BHA wie vorgeschlagen zu tun, aber wenn ich den Anruf auf diese Weise erhalte ich diese unbekanntes Protokoll Fehler:

$ curl -k https://XXX.YYY.ZZZ.WWW:8280/meteo_forecast_weekly_v2/location/1 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
    0  0 0  0 0  0  0  0 --:--:-- --:--:-- --:--:--  0 
curl: (35) error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol 

In der WSO2 stacktrace ich diese erhalten Fehlerprotokoll:

TID: [-1] [] [2017-11-14 14:46:00,107] ERROR {org.apache.synapse.transport.passthru.SourceHandler} - HttpException occurred {org.apache.synapse.transport.passthru.SourceHandler} 
org.apache.http.ProtocolException: Invalid request line: ü8Ò�;Cá©h0ß©�ø_¹i°eõ»Ê.,q5© À0À,À(À$ÀÀ 
     at org.apache.http.impl.nio.codecs.AbstractMessageParser.parse(AbstractMessageParser.java:208) 
     at org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection$LoggingNHttpMessageParser.parse(LoggingNHttpServerConnection.java:407) 
     at org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection$LoggingNHttpMessageParser.parse(LoggingNHttpServerConnection.java:381) 
     at org.apache.http.impl.nio.DefaultNHttpServerConnection.consumeInput(DefaultNHttpServerConnection.java:265) 
     at org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection.consumeInput(LoggingNHttpServerConnection.java:114) 
     at org.apache.synapse.transport.passthru.ServerIODispatch.onInputReady(ServerIODispatch.java:82) 
     at org.apache.synapse.transport.passthru.ServerIODispatch.onInputReady(ServerIODispatch.java:39) 
     at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:113) 
     at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:159) 
     at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:338) 
     at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:316) 
     at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:277) 
     at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:105) 
     at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:586) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.http.ParseException: Invalid request line: ü8Ò�;Cá©h0ß©�ø_¹i°eõ»Ê.,q5© À0À,À(À$ÀÀ 
     at org.apache.http.message.BasicLineParser.parseRequestLine(BasicLineParser.java:287) 
     at org.apache.http.impl.nio.codecs.DefaultHttpRequestParser.createMessage(DefaultHttpRequestParser.java:119) 
     at org.apache.http.impl.nio.codecs.DefaultHttpRequestParser.createMessage(DefaultHttpRequestParser.java:51) 
     at org.apache.http.impl.nio.codecs.AbstractMessageParser.parseHeadLine(AbstractMessageParser.java:156) 
     at org.apache.http.impl.nio.codecs.AbstractMessageParser.parse(AbstractMessageParser.java:206) 
     ... 14 more 
TID: [-1] [] [2017-11-14 14:46:00,113] INFO {org.apache.synapse.transport.passthru.SourceHandler} - Writer null when calling informWriterError {org.apache.synapse.transport.passthru.SourceHandler} 

Warum? Was ist das Problem?

Antwort

1

Ja, Sie müssen nur Wert ändern. Standardmäßig verwendet ESB seinen Standardschlüsselspeicher, der sich in <ESB_HOME>/repository/reources/security/wso2carbon.jks befindet. Wenn Sie in Produktion sind, wird empfohlen, change the default keystore.

+0

Verzeihen Sie die triviale Frage, aber wenn ja ... bedeutet das, dass ich das Zertifikat auf dem Rechner verwenden muss, der meine WSO2-API aufruft? Zu diesem Zeitpunkt rufe ich meine API mit cURL aus der Shell auf. Was muss ich tun, um eine HTTPS-API aufzurufen? Muss ich das Zertifikat in irgendeiner Weise einbeziehen? – AndreaNobili

+0

Nun, Sie brauchen kein Zertifikat, um einen https-Dienst aufzurufen. Es ist der Server, der dem Kunden das Zertifikat vorlegt, es sei denn, Sie sprechen von gegenseitigem SSL. – Bee

+0

Ich habe versucht, auf diese Weise zu tun, aber es funktioniert nicht. Ich habe einige neue Informationen am Ende meines ursprünglichen Posts hinzugefügt. Was denkst du über? – AndreaNobili