SSL 连接导致 javax.net.ssl.SSLException:证书中的主机名不匹配(WSO2 Api 管理器/Tomcat)

SSL-Connection causes javax.net.ssl.SSLException: hostname in certificate didn't match (WSO2 Api Manager / Tomcat)

我目前正在设置一个 dockerized WSO Api 管理器。我们已经为我们的域获得了通配符证书。我成功地将其转换为 java 密钥库并替换了两个 jks 文件。

当我打开 API 管理器时,我没有收到 ssl 警告,浏览器将我的连接标记为安全。

当我尝试登录时出现错误:

在我得到的日志文件中:

TID: [-1234] [] [2017-03-24 11:37:55,305]  INFO     
     {org.apache.axis2.transport.http.HTTPSender} - Unable to sendViaPost   
     to    url[https://localhost:9443/services/AuthenticationAdmin]  
     {org.apache.axis2.transport.http.HTTPSender}
javax.net.ssl.SSLException: hostname in certificate didn't match: 
     <localhost> != </*.mydomain.io/mydomain.io/*.mydomain.io>
     at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.verifyHostName(SSLProtocolSocketFactory.java:341)
     at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.verifyHostName(SSLProtocolSocketFactory.java:277)

服务器似乎正在尝试与本地主机建立 SSL 连接。那么如何将匹配的证书添加到允许本地主机访问的密钥库?

非常感谢!

conf 文件夹的 axis2\axis2.xml 文件中,您必须更改 https transportSender 以包含以下行:

<parameter name="HostnameVerifier">AllowAll</parameter>

Here 你可以阅读更多相关内容

api-manager.xml 文件中,将 localhost 的所有引用更改为与您的域名匹配,重新启动,应该就可以了。

设置

<parameter name="HostnameVerifier">AllowAll</parameter>

存在安全风险,主机名验证是有原因的。