分发和部署 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.
您有两种方法可以解决这个问题。以下为生产环境推荐。第二种方式在生产环境
中不推荐
方式一
您在验证主机名“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
这个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管理器作为客户端进行出站服务调用时,验证服务器证书的主机名。
我已经安装了分布式 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.
您有两种方法可以解决这个问题。以下为生产环境推荐。第二种方式在生产环境
中不推荐方式一
您在验证主机名“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
这个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管理器作为客户端进行出站服务调用时,验证服务器证书的主机名。