我最近将我的后端(rails)移到了Digital Ocean。我在那里安装了我的ssl证书(由CA签名),浏览器在Web应用程序中识别并相应地显示。
我去和我的Android客户端做了一些工作 - 只是为了从Volley那里得到这个例外:
10-06 16:57:20.448: D/Error.Response(10668): com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
我不确定如何处理这件事。当我最初在Heroku安装了证书时,我没有看到这个 - 只有在移动证书之后。我该如何解决这个问题?
答案 0 :(得分:1)
出现此错误是因为我在服务器上安装的证书是没有链的主证书。我将辅助证书与主要证书连接成一个文件,安装在服务器上,Android接受了SSL连接。
我看到很多资源都在谈论编写自定义信任管理器等。我会先尝试测试你的证书链,并在做其他一些事情之前纠正它。
答案 1 :(得分:0)
如果它在应用程序中不起作用但在浏览器中工作则通常是问题,该站点使用服务器名称指示(SNI)在单个IP地址上具有多个证书。所有现代浏览器都支持此功能,但Android不附带旧的Apache HTTP客户端。
有关详细信息,请参阅HttpClient generates SSLException after acquiring new domain name或Android SSL - SNI support。