修改WSO2 APIM 4.1.0主机名后无法创建API及SSL异常求助
WSO2 API Manager 4.1.0 主机名修改后SSL证书不匹配及API创建失败问题解决
问题背景
Windows 11环境下,WSO2 API Manager 4.1.0 GA版本修改主机名为dev.wso2.com,已执行以下操作:
- 更新
<API-M_HOME>/repository/conf/deployment.toml的hostname字段为dev.wso2.com - 生成新密钥库,导出公钥证书并导入到
client-truststore.jks - 在hosts文件添加映射:
127.0.0.1 localhost dev.wso2.com - Carbon控制台配置完成后,可通过
dev.wso2.com访问publisher、devportal、admin及carbon门户
但重启服务器后出现以下问题:
wso2carbon.log抛出SSL异常:
ERROR - DBRetriever Error while executing the http client javax.net.ssl.SSLPeerUnverifiedException: Certificate for <localhost> doesn't match any of the subject alternative names: []
多个组件无法从远程端点获取配置,提示localhost证书不匹配。
2. Publisher中无法创建API,日志显示KeyManagerConfigurationDataRetriever反复尝试获取密钥管理器配置失败。
错误原因分析
- 核心问题:部分内部组件仍在请求
localhost端点,但新生成的证书未将localhost纳入主题备用名称(SAN),导致SSL证书校验失败。 - 密钥库配置不完整:
keystore.primary和keystore.internal用于内部组件通信,当前配置为注释状态,组件默认使用旧证书(仅包含localhost),引发不匹配错误。
解决方案
1. 重新生成包含双主机名的证书
新证书需同时包含localhost和dev.wso2.com作为SAN,确保所有端点请求都能通过SSL校验:
- 生成新密钥库:
keytool -genkey -alias dev.wso2.com -keyalg RSA -keysize 2048 -validity 3650 -keystore devwso2.jks -ext SAN=dns:localhost,dns:dev.wso2.com
- 导出公钥证书:
keytool -export -alias dev.wso2.com -file devwso2.crt -keystore devwso2.jks
- 导入到客户端信任库(若已存在旧证书,先执行删除命令):
# 删除旧证书(可选) keytool -delete -alias dev.wso2.com -keystore <API-M_HOME>/repository/resources/security/client-truststore.jks # 导入新证书 keytool -import -alias dev.wso2.com -file devwso2.crt -keystore <API-M_HOME>/repository/resources/security/client-truststore.jks
2. 完善deployment.toml配置
取消注释并更新keystore.primary和keystore.internal配置,确保内部组件使用新证书:
[keystore.primary] file_name = "devwso2.jks" type = "JKS" password = "wso2carbon" alias = "dev.wso2.com" key_password = "wso2carbon" [keystore.internal] file_name = "devwso2.jks" type = "JKS" password = "wso2carbon" alias = "dev.wso2.com" key_password = "wso2carbon"
同时检查所有未注释的配置项,确保无遗漏的localhost引用(如apim.idp、apim.oauth_config等,若启用需同步修改)。
3. 清理缓存并重启服务
- 删除
<API-M_HOME>/repository/tmp和<API-M_HOME>/repository/carbonapps目录下的所有内容 - 重启WSO2 API Manager服务
4. 功能验证
重启后登录publisher尝试创建API,查看wso2carbon.log是否仍有KeyManagerConfigurationDataRetriever错误,若日志无异常且API创建成功,则问题解决。
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

