javax.net.ssl.SSLKeyException:[安全:090477]从intranet.xxx.com收到的证书链

时间:2013-11-26 12:52:02

标签: java ssl https weblogic keystore

javax.net.ssl.SSLKeyException:[安全:090477]从intranet.xxx.com收到的证书链 - 158.171.160.28不受信任导致SSL握手失败。

我正在尝试使用weblogic从一个Intranet网站获取内容为html页面。连接到网站时,我收到javax.net.ssl.SSLKeyException:[Security:090477]异常。如果使用相同的代码,我可以使用主类来实现所需的代码。请就此提出建议。

public class Test{
    public static void main(String[] args) {
        String[] lines = null;

        try {
             // configure the SSLContext with a TrustManager
            SSLContext ctx = null;
            try {
                ctx = SSLContext.getInstance("TLS");
            } catch (NoSuchAlgorithmException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                ctx.init(new KeyManager[0], new TrustManager[] {new DefaultTrustManager()}, new SecureRandom());
            } catch (KeyManagementException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            SSLContext.setDefault(ctx);

            String url = "https://www.google.com"

            Document doc = Jsoup.connect(url).get();

            Elements elements = doc.getElementById("table_UniqueReportID").children();
            for(Element element : elements)
            {
                System.out.println(element.nodeName());
                if(element.nodeName().equalsIgnoreCase("tbody"))
                {
                    Elements rowElements = element.children();
                    for(Element currentRow : rowElements)
                    {
                        System.out.println(currentRow.text());
                    }
                }
            }

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    private static class DefaultTrustManager implements X509TrustManager {


        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }

        @Override
        public void checkClientTrusted(X509Certificate[] arg0, String arg1)
                throws CertificateException {
            // TODO Auto-generated method stub

        }

        @Override
        public void checkServerTrusted(X509Certificate[] arg0, String arg1)
                throws CertificateException {
            // TODO Auto-generated method stub

        }
    }
}

1 个答案:

答案 0 :(得分:3)

您还需要将证书导入密钥库和签名者以及java cacerts。

确保证书通用名称与您的名称相同。

例如..如果您看到SBI网上银行证书,那么它的通用名称就像

CN = www.onlinesbi.com

我们必须将证书导入密钥库才能工作。