我正在为Web服务创建一些代理服务,其限制是必须保护所有连接(通过https)。 在对WSO2Server进行一些配置更改后,我终于可以成功地创建那些代理服务。通过WSO2Esb在客户端和最终的Web服务之间建立连接是可以的,但连接速度很慢。
为了解决网络问题,我们允许通过http的请求具有非常好的性能。总而言之,通过http的相同客户端请求持续不到1秒,如果我们通过https执行它持续20秒或多或少。
尝试了解问题的其他测试:我通过https直接向最终Web服务请求,而不通过WSO2ESB。在这种情况下,https性能非常好(非常类似于请求是通过http完成的)。
所以问题可能出在WSO2ESB服务器配置的某些部分。始终第一个https请求持续相同(20秒),如果我执行多个以下操作,则持续时间少于1.5秒。所以问题可能是某种与ssl连接相关的超时。
更有用的信息:
来自CARBON_HOME/repository/conf/tomcat /catalina-server.xml:
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8888"
bindOnInit="false"
sslProtocol="TLS"
sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2"
maxHttpHeaderSize="8192"
acceptorThreadCount="2"
maxThreads="250"
minSpareThreads="50"
disableUploadTimeout="false"
enableLookups="false"
connectionUploadTimeout="120000"
maxKeepAliveRequests="200"
acceptCount="200"
server="WSO2 Carbon Server"
clientAuth="false"
compression="on"
scheme="https"
secure="true"
SSLEnabled="true"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="..."
URIEncoding="UTF-8" />
也许我错过了axis2.xml配置文件中的内容($ CARBON_HOME / repository / conf / axis2 / axis2.xml)?以下是与以下内容相关的部分:
<transportReceiver name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLListener">
<parameter name="port" locked="false">8443</parameter>
<parameter name="non-blocking" locked="false">true</parameter>
<parameter name="bind-address" locked="false">XXX.XXX.XXX.XXX</parameter>
<parameter name="WSDLEPRPrefix" locked="false">https://XXX.XXX.XXX.XXX:8443</parameter>
<parameter name="httpGetProcessor" locked="false">org.wso2.carbon.transport.nhttp.api.PassThroughNHttpGetProcessor
<parameter name="SSLProtocol">TLSv1.2</parameter>
<parameter name="keystore" locked="false">
<KeyStore>
<Location>repository/resources/security/wso2carbon.jks</Location>
<Type>JKS</Type>
<Password>XXX</Password>
<KeyPassword>XXX</KeyPassword>
</KeyStore>
</parameter>
<parameter name="truststore" locked="false">
<TrustStore>
<Location>repository/resources/security/client-truststore.jks</Location>
<Type>JKS</Type>
<Password>XXX</Password>
</TrustStore>
</parameter>
</transportReceiver>
<transportSender name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLSender">
<parameter name="non-blocking" locked="false">true
<parameter name="SSLProtocol">TLSv1.2</parameter>
<parameter name="keystore" locked="false">
<KeyStore>
<Location>repository/resources/security/wso2carbon.jks</Location>
<Type>JKS</Type>
<Password>XXXX</Password>
<KeyPassword>XXXX</KeyPassword>
</KeyStore>
</parameter>
<parameter name="truststore" locked="false">
<TrustStore>
<Location>repository/resources/security/client-truststore.jks</Location>
<Type>JKS</Type>
<Password>XXXXX</Password>
</TrustStore>
</parameter>
<parameter name="HostnameVerifier">AllowAll</parameter>
</transportSender>
问题已解决。
低性能SSL问题是由网络防火墙的限制引起的。防火墙阻止了与DNS服务器的连接,因此WSO2ESB无法正确验证客户端证书和客户端主机名。
在防火墙中添加新规则后,WSO2ESB的SSL性能非常好。
谢谢。