简体   繁体   English

如何向 HttpsUrlConnection 指示它应该使用的证书(以前导入到 cacert 文件)

How to indicate to HttpsUrlConnection the cert (previously imported to cacert file) that it should use

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文简体   中文繁体   英文版本 版本,有任何建议请联系yoyou2525@163.com。

I'm trying to consume a web service, in which we import a certificate to the JDK's cacert file.我正在尝试使用 web 服务,其中我们将证书导入到 JDK 的 cacert 文件中。 But I can't understand how to "set" the HttpsURLConnection object the cert that it must use to be able to execute the web service.但我不明白如何“设置” HttpsURLConnection object 必须使用它才能执行 web 服务的证书。

I read that once the certificate was installed in the cacert file, it was no longer necessary to indicate anything when connecting to the web service.我读到,一旦证书安装在 cacert 文件中,连接到 web 服务时就不再需要指示任何内容。

I am currently skipping the KeyStore and TrustStore validation to invoke the web service.我目前正在跳过KeyStoreTrustStore验证来调用 web 服务。

This is my code:这是我的代码:

public void tokenFotoCteNOCHOProd(String url) throws IOException {
    HttpsURLConnection conn = null;
    String params = "";
    String res = "";
    try {
        TrustManager[] trustAllCerts = new TrustManager[] {
            new X509TrustManager() {
                @Override
                public void checkClientTrusted(java.security.cert.X509Certificate[] arg0, String arg1) throws CertificateException {
                    /**/
                }

                @Override
                public void checkServerTrusted(java.security.cert.X509Certificate[] arg0, String arg1) throws CertificateException {
                    /**/
                }

                @Override
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
            }
        };
            
        HostnameVerifier hv = new HostnameVerifier() {
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        };
        SSLContext sc = SSLContext.getInstance("TLSv1.2");
        sc.init(null, trustAllCerts, new SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        HttpsURLConnection.setDefaultHostnameVerifier(hv);

        params = "someParams";
        URL url = new URL(url);
        conn = (HttpsURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setConnectTimeout(3000);
        try (OutputStream os = conn.getOutputStream()) {
            os.write(params.getBytes(StandardCharsets.UTF_8));
            os.flush();
            res = getRespWS(conn);//get resp..
        }
    } catch (KeyManagementException | NoSuchAlgorithmException | ClassCastException | JsonParseException e) {
        LOGGER.info("error", e);
    }
}
问题暂未有回复.您可以查看右边的相关问题.
3 从文本文件导入以前导出的Access SQL查询 - Import previously exported Access SQL queries from text files

我使用这篇文章的答案将查询导出到文本文件,以便进行查找/替换练习: 使用VBA将所有MS Access SQL查询导出到文本文件 我继承了一个数据库,该数据库具有对象名称,banker1,banker2等,并进行了硬编码,因此我不得不创建其他文件。 我导出了所有查询,并用新名称替换 ...

5 使用XP批处理文件将p12证书导入到证书(本地计算机)\\个人存储中 - Using an XP batch file to import a p12 certificate into the Certificates (Local Computer) \personal store

我正在尝试使用Windows XP批处理文件来自动将.p12证书导入MMC“证书”管理单元所谓的证书(本地计算机)\\个人\\证书 certmgr.msc可能是用于此目的的正确工具,但我已经尝试过 还有一些没有成功。 通常,MMC只是在打开证书的情况下打开。因此,我还没有看到任何 ...

6 无法使用Sun的代码将CA导入cacert - Failed to import CA to cacert using Sun's Code

我正在尝试使我的程序可以将自签名CA从远程添加到本地Java信任密钥库中。 (是的,我知道这很危险,我会说,但是他们不会打扰,所以也不要打扰告诉我“这很危险”。我可以做的就是在config属性中进行“切换”,这样不需要使用此功能时可以将其关闭。) 我正在使用的代码来自此链接: ...

9 无法将证书导入到cacerts - Can't import certificate to cacerts

我有一个从我的CAS服务器重定向到的Web应用程序。 但是我有一个例外: 所以我用谷歌搜索了一下,发现了很多关于它的话题。 我发现自己创建的证书必须位于javas cacerts内部。 所以我想出了如何添加它: 但是,我收到以下错误消息(德语/英语): 德语: ...

2016-09-08 12:29:00 1 208   ssl/ cas
10 证书存在于cacert文件中,但抛出ssl异常 - Certificate is present in cacert file but throwing ssl exception

我在2个不同的服务器上安装了2个应用程序(1)在glassfish中托管(2)批处理服务器(独立的Java应用程序)。 这两个应用程序都使用通用的Java程序(以jar文件的形式)来调用外部服务器。 我正在使用“ CloseableHttpClient”建立与该外部第三方服务器的连接。 从 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM