2017-11-14 17 views
0

나는 그렇게하지 않았다 WSO2 ESB 나는 다음과 같은 의심을 품고있다.HTTP 대신 프로토콜 대신 HTTPS를 사용하는 WSO2 ESB API를 올바르게 만들려면 어떻게해야합니까?

저는 Carbon 서버에 몇 가지 API를 배포 했으므로 잘 작동합니다.

이 API는 HTTP을 프로토콜로 사용합니다. 어떤 이유로 나는 그것을 HTTPS으로 변경해야합니다.

내 두 주입니다 : 난 단지 HTTPHTTPS 가치 양식합니다 (자원 태그)를 프로토콜 속성을 변경해야?

<?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}"> 
     ............................................................... 
     ............................................................... 
     ............................................................... 

또는 Carbon 서버에 인증서를 구성해야합니까?

편집-1 : 나는 BHA에 의해 제안 할 tryied하지만이 방법으로 전화를 할 때 나는이 알 수없는 프로토콜 오류 얻을 :이 얻으 WSO2의 스택 트레이스 속으로

$ 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 

을 오류 로그 :

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} 

왜? 문제가 무엇입니까?

답변

1

예, 값만 변경하면됩니다. 기본적으로 ESB는 기본 키 스토어 인 <ESB_HOME>/repository/reources/security/wso2carbon.jks을 사용합니다. 제작중인 경우 change the default keystore으로 보내주십시오.

+0

사소한 질문을 용서하십시오. 그렇다면 내 WSO2 API를 호출하는 시스템에서 인증서를 사용해야한다는 의미입니까? 현재 나는 cURL을 사용하여 쉘에서 API를 호출하고 있습니다. HTTPS API를 호출하려면 무엇을해야합니까? 어떤 방식 으로든 인증서를 포함시켜야합니까? – AndreaNobili

+0

글쎄, 당신은 https 서비스를 호출하는 인증서가 필요하지 않습니다. 상호 SSL에 대해 이야기하지 않는 한 클라이언트에게 인증서를 제공하는 서버입니다. – Bee

+0

내가 이런 식으로 할 tryied하지만 작동하지 않습니다. 원래 게시물의 끝에 새로운 정보를 추가했습니다. 당신은 무엇을 생각합니까? – AndreaNobili