我有两个域名:foo.net
和 bar.com
。它们都有 SSL 证书,在所有桌面和移动浏览器中都能正常工作。它们托管于一个配置有 Nginx 的同一台服务器上。
然而,当我从本机 Android 应用程序中向域名发出请求时,它会以某种方式从错误的域名获取证书!这导致了一个 IO 异常:
request = new HttpPost("https://foo.net/api/v1/baz");
request.setHeader("Authorization", "user:pass");
response = httpClient.execute(request);
javax.net.ssl.SSLException: 证书中的主机名与<foo.net> != <bar.com> OR <bar.com> OR <www.bar.com> 不匹配
什么会导致 Android/Java 尝试使用来自bar.com
的证书,而其他措施似乎表明服务器已正确配置?在 Nginx 访问或错误日志中没有任何内容。我的 Android 项目中也没有提到bar.com
。
编辑:我不确定原因是什么,但似乎服务器正在使用bar.com
的证书,用于服务器IP https://198.245.xx.xxx