wso2esb使用自己的证书进行https代理服务的配置时,需要修改相应的配置文件,并把证书移动到esb的证书目录下。
1.准备工作
服务端:
将生成的server.keystore和root.truststore拷贝到 $ESB_HOME/repository/resources/security/ 目录下。
客户端:
如有必要,需要将root.crt导入到信任库中(eclipse中为$JRE_HOME\lib\security\cacerts -alias root)
keytool -import -file root.crt -keystore $JRE_HOME\lib\security\cacerts -alias root
2.配置文件修改
修改配置文件:$ESB_HOME/repository/conf/axis2/axis2.xml
修改” Transport Ins”模块中 < transportReceive name="https" >值:
<transportReceiver name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLListener">
<parameter name="port" locked="false">8243</parameter>
<parameter name="non-blocking" locked="false">true</parameter>
<parameter name="bind-address" locked="false">api.dimain.cn</parameter>
<parameter name="WSDLEPRPrefix" locked="false">https://api.domain.cn:8243</parameter>
<parameter name="httpGetProcessor" locked="false">org.wso2.carbon.transport.nhttp.api.PassThroughNHttpGetProcessor</parameter>
<parameter name="keystore" locked="false">
<KeyStore>
<Location>repository/resources/security/server.keystore</Location>
<Type>JKS</Type>
<Password>1234567</Password>
<KeyPassword>1234567</KeyPassword>
</KeyStore>
</parameter>
<parameter name="truststore" locked="false">
<TrustStore>
<Location>repository/resources/security/root.truststore</Location>
<Type>JKS</Type>
<Password>1234567</Password>
</TrustStore>
</parameter>
<parameter name="SSLVerifyClient">require</parameter>
</transportReceiver>
需要将Keystore和Truststore的配置修改为自建的证书。
配置文件修改完成后,重启esb。
3.HTTPS代理服务配置
配置代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="SSLTest"
transports="https,http"
statistics="enable"
trace="enable"
startOnLoad="true">
<target>
<inSequence>
<log level="full"/>
</inSequence>
<outSequence>
<log level="full"/>
<send/>
</outSequence>
<faultSequence>
<makefault version="pox">
<reason expression="get-property('ERROR_MESSAGE')"/>
</makefault>
<log/>
<send/>
</faultSequence>
<endpoint>
<address uri="http://101.41.12.176:10021">
<timeout>
<duration>10000</duration>
<responseAction>fault</responseAction>
</timeout>
<suspendOnFailure>
<errorCodes>101508,101503,101504</errorCodes>
<initialDuration>15000</initialDuration>
<progressionFactor>1.0</progressionFactor>
<maximumDuration>30000</maximumDuration>
</suspendOnFailure>
</address>
</endpoint>
</target>
<parameter name="enableMTOM">false</parameter>
<description/>
</proxy>
4.测试
Linux下使用Openssl s_client测试
执行如下命令:
openssl s_client -showcerts -cert ./certification/client.pem -connect api.domain.cn:8243
Windows平台Java客户端模拟测试
网上下载的java代码,修改keystore、truststore指向对应的证书。
注意:
client.keystore作为秘钥库
root.trustore 作为信任库
即可。
注:以上测试,使用的是自签证书。