You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSO2 EI 6.X.X(Docker)双向SSL认证配置疑问及完整步骤咨询

WSO2 EI双向SSL认证配置指南

关于JKS格式警告的说明

  • 可以忽略该警告,但不推荐。JKS是Oracle专属格式,PKCS12是跨平台兼容的行业标准,长期来看建议按提示迁移。
  • 迁移命令(替换为你的实际路径):
    keytool -importkeystore -srckeystore C:\ei_pathserver\repository\resources\security\eitest.jks -destkeystore C:\ei_pathserver\repository\resources\security\eitest.jks -deststoretype pkcs12

完整双向SSL配置步骤

前提准备

已完成:

  1. 生成WSO2 EI的密钥库(eitest.jks)及公钥证书
  2. 客户端应用已生成自身的密钥库、公钥证书;若EI需调用客户端服务,需获取客户端服务的公钥证书

一、入站双向SSL配置(Client APP → WSO2 EI)

此配置确保只有携带有效证书的客户端能访问EI的API/服务。

  1. 导入客户端公钥到EI信任库
    将客户端的公钥证书导入EI的默认信任库(client-truststore.jks):
    keytool -import -alias client-cert -file C:\path_to_client_cert\client_public_cert.cer -keystore C:\path_eiserver\repository\resources\security\client-truststore.jks

  2. 修改EI的axis2.xml配置
    打开C:\path_eiserver\repository\conf\axis2\axis2.xml,找到HTTPS传输接收器节点(<transportReceiver name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLListener">),修改如下参数:

    • 强制客户端提供证书:
    <parameter name="SSLVerifyClient">require</parameter>
    
    • 配置EI的SSL密钥库(若已迁移为PKCS12,Type改为PKCS12):
    <parameter name="keystore" locked="false">
        <KeyStore>
            <Location>repository/resources/security/eitest.jks</Location>
            <Type>JKS</Type>
            <Password>你的密钥库密码</Password>
            <KeyPassword>你的密钥密码</KeyPassword>
        </KeyStore>
    </parameter>
    
    • 配置信任库:
    <parameter name="truststore" locked="false">
        <TrustStore>
            <Location>repository/resources/security/client-truststore.jks</Location>
            <Type>JKS</Type>
            <Password>你的信任库密码</Password>
        </TrustStore>
    </parameter>
    
  3. 重启WSO2 EI服务
    配置修改后必须重启服务,使设置生效。


二、出站双向SSL配置(WSO2 EI → Client APP)

此配置确保EI调用客户端服务时,能通过对方的证书验证,同时提供自身证书供对方验证。

  1. 导入客户端服务公钥到EI信任库
    若客户端服务要求验证EI的请求,需将客户端服务的公钥证书导入EI的client-truststore.jks:
    keytool -import -alias client-service-cert -file C:\path_to_client_service_cert\client_service_public_cert.cer -keystore C:\path_eiserver\repository\resources\security\client-truststore.jks

  2. 配置EI的HTTPS发送器
    在axis2.xml中找到HTTPS传输发送器节点(<transportSender name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLSender">),确认密钥库和信任库配置正确:

<parameter name="keystore" locked="false">
    <KeyStore>
        <Location>repository/resources/security/eitest.jks</Location>
        <Type>JKS</Type> <!-- PKCS12格式则改为PKCS12 -->
        <Password>你的密钥库密码</Password>
        <KeyPassword>你的密钥密码</KeyPassword>
    </KeyStore>
</parameter>
<parameter name="truststore" locked="false">
    <TrustStore>
        <Location>repository/resources/security/client-truststore.jks</Location>
        <Type>JKS</Type>
        <Password>你的信任库密码</Password>
    </TrustStore>
</parameter>
  1. API/代理服务中启用出站SSL
    在调用客户端服务的API端点配置中,添加SSL策略(或直接使用全局配置):
<endpoint name="ClientServiceEndpoint">
    <address uri="https://client-app-domain:port/service-path" format="json">
        <enableSec policy="conf:/repository/axis2/policies/ssl_policy.xml"/>
    </address>
</endpoint>

三、为REST API配置双向认证

  1. 确保入站SSL配置完成
    完成前面的入站双向SSL配置步骤。

  2. 修改API配置添加安全处理器
    打开API的XML文件(路径:repository/deployment/server/synapse-configs/default/api/),添加SSLMutualAuthHandler处理器,强制验证客户端证书:

<handlers>
    <handler class="org.wso2.carbon.apimgt.gateway.handlers.security.SSLMutualAuthHandler">
        <property name="SSLVerifyClient" value="require"/>
    </handler>
</handlers>
  1. 测试API
    使用携带客户端证书的工具(如curl)发送请求:
    curl -X GET https://ei-host:port/your-api-context/path -E client-cert.pem --key client-key.pem -k
    验证只有携带有效证书的请求能成功访问API。

注意事项

  • 生产环境禁止使用自签名证书,需使用CA签发的正规证书。
  • 密钥库、信任库的密码需严格保密,避免泄露。
  • 迁移为PKCS12格式后,需同步修改所有配置文件中的Type参数为PKCS12。

内容的提问来源于stack exchange,提问作者Justin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:10:37