WSO2 APIM v4.2.0升级后登录页500错误修复咨询
修复WSO2 APIM 4.2.0 SSL握手异常(No name matching localhost found)
问题根源
升级到4.2.0后,Java 17的SSL验证逻辑更严格,默认要求证书的SAN(Subject Alternative Name)字段包含当前访问的主机名(localhost),而旧版本WSO2的自签名证书通常未配置localhost作为SAN条目,导致SSL握手失败。
解决方案
1. 生成包含localhost的新自签名证书(生产/正式环境推荐)
替换WSO2默认自签名证书,确保证书SAN字段包含localhost:
- 进入
<APIM_HOME>/repository/resources/security目录 - 执行以下命令生成新证书(参数中的密码请保持与现有配置一致,可按需替换自定义域名):
keytool -genkeypair -alias wso2carbon -keyalg RSA -keysize 2048 -validity 3650 -keystore wso2carbon.jks -dname "CN=localhost, OU=WSO2, O=WSO2, L=Colombo, S=Western, C=LK" -ext SAN="DNS:localhost,DNS:your-custom-domain.com" -storepass wso2carbon -keypass wso2carbon
- 备份原有
wso2carbon.jks文件,将新生成的证书替换到对应目录
2. 临时关闭SSL主机名验证(仅测试环境可用)
如果暂时无法替换证书,可在deployment.toml中添加以下配置关闭严格验证:
[transport.passthru_https.sender.parameters] HostnameVerifier="AllowAll" [transport.http.sender.parameters] HostnameVerifier="AllowAll" [apim.gateway.environment] hostname_verifier = "AllowAll"
注意:此方案存在安全风险,生产环境禁止使用
3. 检查现有证书的SAN字段
先确认当前证书是否缺失localhost的SAN条目:
keytool -list -v -keystore <APIM_HOME>/repository/resources/security/wso2carbon.jks -alias wso2carbon -storepass wso2carbon
查看输出的Extensions部分,确认是否包含Subject Alternative Name且存在DNS:localhost,若无则需重新生成证书。
4. 统一配置中的主机名
确保deployment.toml内所有服务地址的主机名与证书的CN/SAN匹配,示例:
[server] hostname = "localhost" [apim.devportal] url = "https://localhost:9443/devportal" [apim.publisher] url = "https://localhost:9443/publisher"
验证修复
重启WSO2 APIM 4.2.0,访问/devportal、/publisher、/admin登录页,检查是否仍有500错误,同时确认日志中无SSL握手异常信息。
内容的提问来源于stack exchange,提问作者Yaroslav
相关产品推荐
相关产品推荐

