分发和部署 WSO2 API 管理器组件

Distributed and deployed the WSO2 API Manager components

我已经安装了分布式 WSO2 API Manager Componentes。这非常有效,但是当我订阅 API 并生成令牌时,会显示此错误:

"Token revoke failed : HTTP error code : 500"

日志:

[2015-08-12 13:28:59,623] ERROR - TargetHandler I/O error: Host name verification failed for host : 189.9.134.48
javax.net.ssl.SSLException: Host name verification failed for host : 189.9.134.48
    at org.apache.synapse.transport.http.conn.ClientSSLSetupHandler.verify(ClientSSLSetupHandler.java:152)
    at org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:285)
    at org.apache.http.nio.reactor.ssl.SSLIOSession.outboundTransport(SSLIOSession.java:420)
    at org.apache.http.impl.nio.reactor.AbstractIODispatch.outputReady(AbstractIODispatch.java:150)
    at org.apache.http.impl.nio.reactor.BaseIOReactor.writable(BaseIOReactor.java:181)
    at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:346)
    at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:320)
    at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:280)
    at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106)
    at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:604)
    at java.lang.Thread.run(Thread.java:745)
[2015-08-12 13:28:59,627]  WARN - EndpointContext Endpoint : AnonymousEndpoint will be marked SUSPENDED as it failed
[2015-08-12 13:28:59,628]  WARN - EndpointContext Suspending endpoint : AnonymousEndpoint - last suspend duration was : 30000ms and current suspend duration is : 30000ms - Next retry after : Wed Aug 12 13:29:29 BRT 2015
[2015-08-12 13:28:59,629]  INFO - LogMediator STATUS = Executing token 'fault' sequence, ERROR_CODE = 101500, ERROR_MESSAGE = Error in Sender
[2015-08-12 13:28:59,635] ERROR - subscription-add:jag java.lang.RuntimeException: Token revoke failed : HTTP error code : 500
[2015-08-12 13:29:09,641] ERROR - SourceHandler I/O error: Conexão fechada pela outra ponta

我该如何解决这个问题?我正在使用 APIM 1.9.

您有两种方法可以解决这个问题。以下为生产环境推荐。第二种方式在生产环境

中不推荐

方式一

  1. 您在验证主机名“189.9.134.48”时遇到问题。 189.9.134.48 应该是生成密钥时的公用名 (CN)。您必须将 WSO2 IS 服务器的 public 密钥证书导入 WSO2 APIM 服务器。您可以使用以下命令从密钥库中提取 public 密钥证书。进入 <IS_HOME>/repository/resources/security/ 目录

    keytool -export -keystore <IS_Store> -alias <alias_of_IS_certificate> -file <IS_certificate>.cer 
    
  2. 这个IS的SSL证书应该导入到APIM服务器的client-truststore.jks。 关闭 APIM 服务器(如果已启动)。 转到 <APIM_HOME>/repository/resources/security/ 目录。 使用以下命令将appserver的public key导入到client-truststore.jks文件中 在终端中。

    keytool -import -alias <alias_of_IS_certificate> -file <IS_certificate>.cer -keystore client-truststore.jks -storepass wso2carbon 
    

    重新启动 APIM 服务器。

方式二

<APIM_HOME>/repository/conf/axis2/axis2.xml 文件的 HTTPS 传输发送器配置中将 <parameter name="HostnameVerifier"> 元素设置为 AllowAll。例如,<parameter name="HostnameVerifier">AllowAll</parameter>.

该参数在API管理器作为客户端进行出站服务调用时,验证服务器证书的主机名。