Joh*_*y19 6 android certificate root lets-encrypt
您好设置了一个小服务,从Let的加密生成免费证书,并配置Nginx使用该证书(fullchain.pem和privkey.pem)
但是,当我尝试从我的Android应用程序(使用OkHttp3)拨打电话时,我收到此错误
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
Run Code Online (Sandbox Code Playgroud)
让我们加密Android证书信任存储不信任的根证书吗?或者在设置nginx时我错过了什么?什么是解决这个问题如果我还想使用Let的加密证书?
我不确定它是否有用,但是该/etc/letsencrypt/live/<your domain>/README文件说:
该目录包含您的密钥和证书。
privkey.pem:您的证书的私钥。
fullchain.pem:大多数服务器软件中使用的证书文件。
chain.pem:用于 Nginx >=1.3.7 中的 OCSP 装订。
cert.pem:会破坏许多服务器配置,并且在没有阅读更多文档的情况下不应使用(请参阅下面的链接)。我们建议不要移动这些文件。有关更多信息,请参阅 Certbot 用户指南,网址为 https://certbot.eff.org/docs/using.html#where-are-my-certificates。
那么也许你应该使用chain.pem?
另一方面,对于那些甚至没有使用 Nginx 的人来说,我从 Android 中得到了同样的错误,因为我错误地使用chain.pem了fullchain.pem. Android 应用程序的解决方案之一要求您发送整个证书链(即:)fullchain.pem,如下所述:
https://developer.android.com/training/articles/security-ssl.html#CommonHostnameProbs
有两种方法可以解决这个问题:
配置服务器以将中间 CA 包含在服务器链中。大多数 CA 提供有关如何为所有常见 Web 服务器执行此操作的文档。如果您需要网站至少在 Android 4.2 及以上版本中使用默认 Android 浏览器,这是唯一的方法。
或者,像对待任何其他未知 CA 一样对待中间 CA,并创建一个 TrustManager 来直接信任它,如前两节中所做的那样。
希望能帮助到你。