WSO2 API Manager收到致命警报:handshake_failure
问题描述:
使用WSO2 API Manager(V1.10),我发布了一个API,并将SSL证书导入到client-truststore.jks。但是当我打电话给这个API,我收到这个错误:WSO2 API Manager收到致命警报:handshake_failure
2016-07-11 11:42:11,296 [-] [HTTPS-Sender I/O dispatcher-7] ERROR TargetHandler I/O error: Received fatal alert: handshake_failure
javax.net.ssl.SSLException: Received fatal alert: handshake_failure
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1650)
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1618)
at sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1787)
at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1071)
at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:893)
at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:767)
at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
at org.apache.http.nio.reactor.ssl.SSLIOSession.doUnwrap(SSLIOSession.java:228)
at org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:263)
at org.apache.http.nio.reactor.ssl.SSLIOSession.isAppInputReady(SSLIOSession.java:391)
at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:119)
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)
答
我怀疑你的API调用客户端程序没有API服务器的证书。 (通常您导入证书到你的JRE的jacerts或其他信托商店)
But When I call this API, I 'm receving this error:
当你调用这个API,没有这个API调用的客户端程序(Java的,例如)也得到这个WSO2服务器的证书导入?这可能会解决您的问题。
答
根据错误日志,这发生在http发件人。即当api经理调用后端时。如果您的后端是“HTTPS”,则需要将其公共证书导入到APIM的信任列表中
答
在Java 1.7
中出现同样的问题。 Java 1.8
已解决我的问题
通过将证书导入到client-truststore.jks,你是什么意思?你的API有不同的SSL证书吗?在这种情况下,您必须将证书导入到客户机委托信任和wso2carbon.jks中,然后在您用于调用API的客户机中使用证书。另请检查证书中的主机名。由于证书和请求URI中的主机名不同,可能会发生此异常。 –