突然得到“java.security.cert.CertPathValidatorException:找不到证书路径的信任锚”,当我之前没有

时间:2018-04-17 18:55:01

标签: java android android-studio ssl ssl-certificate

我正在尝试使用以下代码从JSON端点获取令牌:

public class FetchToken extends AsyncTask<String, Void, Void> {
    String data = "";
    String token = "";

    public TokenDelegate delegate = null;

    @Override
    protected Void doInBackground(String... identity) {
        try {
            if (identity.length == 1) {
                URL url = new URL(identity[0]);

                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                String line = "";

                while (line != null) {
                    line = bufferedReader.readLine();
                    data = data + line;
                }

                JSONObject JO = new JSONObject(data);
                token = JO.get("token").toString();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } 

        return null;
    }
}

当我运行代码时,我收到以下错误:javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.之前使用相同的代码,我能够查询不同的JSON端点。现在我已切换到这个新服务器,我只收到此错误。

我查看了我公司以前的开发人员的另一个实现,查询同一个服务器。他们的代码中没有引用任何加载的证书,任何信任管理器或任何类型的任何证书。在他们(单独的)Android应用程序中,他们有一个.crt文件位于assets文件夹中,但它似乎没有包含在任何地方的应用程序中。

有没有办法在我的应用程序中安装证书?如果没有,有什么迹象表明我做错了吗?我试图查看对同一错误的其他引用,但它们没有说明如何在不使用CertificateFactory或类似的东西的情况下查询此端点。

0 个答案:

没有答案