WSO2 EI 6.6.0 如何为Synapse Secure Vault(ciphertool)创建专属JKS
结论
WSO2 EI 6.6.0 完全支持为 Synapse Secure Vault(ciphertool)配置独立使用的全新JKS密钥库,不需要复用产品默认的全局主密钥库。
配置步骤
第一步:生成专属独立JKS密钥库
用JDK自带的keytool工具生成专门给Secure Vault用的JKS文件,参考命令如下,执行时替换成你自己的组织信息、密码参数即可:keytool -genkey -alias securevault -keyalg RSA -keysize 2048 -keystore wso2ei-securevault.jks -storepass <你的密钥库访问密码> -keypass <对应别名的私钥密码> -dname "CN=WSO2 Secure Vault,OU=Integration,O=你的组织名,L=所在城市,ST=所在省份,C=国家代码" -validity 3650生成完成后,将
wso2ei-securevault.jks文件放到<EI_HOME>/repository/resources/security/目录下,和产品默认的wso2carbon.jks同目录存放即可。第二步:修改Secure Vault专属配置
注意:不要修改carbon.xml里配置的全局主密钥库、信任库参数,这部分配置服务于SSL传输、消息签名等其他安全能力,和Secure Vault无关,修改后会影响产品基础功能运行
只需要修改两个Secure Vault专属配置文件即可:- 打开
<EI_HOME>/repository/conf/security/cipher-tool.properties,修改以下参数:keystore.file:值设为独立JKS的路径,即${carbon.home}/repository/resources/security/wso2ei-securevault.jkskeystore.type:值设为JKSkeystore.alias:值设为生成JKS时填写的别名,示例配置为securevaultkeystore.storepass、keystore.keypass:暂时填成你创建JKS时设置的明文密码,初始化完成后这两个值会被自动加密
- 打开
<EI_HOME>/repository/conf/security/secret-conf.properties,确认其中的密钥库配置和上面cipher-tool.properties里的参数完全一致,避免运行时读取密钥库和加密时用的密钥库不匹配。
- 打开
第三步:初始化独立密钥库
进入<EI_HOME>/bin目录,执行ciphertool初始化命令:- Linux环境:
./ciphertool.sh -Dconfigure - Windows环境:
ciphertool.bat -Dconfigure
执行过程中按提示输入密钥库对应密码即可,初始化完成后,配置文件里的明文密钥库密码会被自动替换为密文。
- Linux环境:
第四步:验证配置有效性
按正常流程对需要加密的配置项执行密码加密操作,完成后重启EI服务:- 如果服务正常启动,所有加密的配置项可以被正常解析读取,说明独立密钥库配置生效
- 如果启动时报密钥库读取失败、密文解密失败,优先检查JKS文件权限、配置文件里的路径/别名/密码是否填写正确。
注意事项
- 独立JKS文件一定要做好离线备份,一旦JKS丢失,所有用该密钥库加密的密文都无法解密,会直接导致服务无法启动
- 运行EI进程的操作系统用户必须对独立JKS文件有可读权限,否则会报密钥库加载失败
- 如果之前已经用默认的wso2carbon.jks加密过一批配置密码,切换到独立JKS后,需要对所有加密项重新执行加密流程,旧密文无法被新密钥库解密
- 不要在全局主密钥库配置里引用这个独立JKS,避免影响产品其他安全功能的正常运行
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

