无法从 Android 应用程序连接到我的 HTTPS 站点:找不到证书路径的信任锚

Lost ability to connect to my HTTPS site from Android application: Trust anchor for certification path not found

我有两个移动应用程序,它们从内部访问我的网站 https://example.com。最近,我把证书延长了一年,并在nginx的配置上更换了它。

现在 Web 浏览器可以很好地打开站点,iOS 应用程序可以很好地打开站点,但是 Android 应用程序无法打开它说

Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

使用代码

    myUrl = URL("https://example.com")
    try {
        conn = myUrl.openConnection() as HttpsURLConnection
        conn.readTimeout = 10000
        conn.connectTimeout = 15000
        conn.requestMethod = "POST"
        conn.doInput = true
        conn.doOutput = true
        conn.setChunkedStreamingMode(0)


        val postData = URLEncoder.encode(...

        val os = conn.outputStream

它想要什么以及如何解决?


重新安装没有帮助。 运行 在调试器下显示此错误。

这是我网站上的证书问题,而不是应用程序中的证书问题。由于某种原因,只有 Android 个应用程序对此问题敏感。 iOS 应用程序和所有 Web 浏览器都报告证书正常。 SSL 检查像 digicert.com 这样的网站是否报告链问题。

我所做的是我拿了 nginx

指向的这个文件
ssl_certificate /etc/ssl/certs/my_certificate.crt;

里面只有一个证书,然后粘贴了我的提供商提供的另外两个证书。这些额外的证书被命名为“root”和“intermediate”。

之后那个问题就解决了。