簡體   English   中英

如何向 HttpsUrlConnection 指示它應該使用的證書(以前導入到 cacert 文件)

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

提示:本站收集StackOverFlow近2千萬問答,支持中英文搜索,鼠標放在語句上彈窗顯示對應的參考中文或英文, 本站還提供   中文簡體   英文版本   中英對照 版本,有任何建議請聯系yoyou2525@163.com。

我正在嘗試使用 web 服務,其中我們將證書導入到 JDK 的 cacert 文件中。 但我不明白如何“設置” HttpsURLConnection object 必須使用它才能執行 web 服務的證書。

我讀到,一旦證書安裝在 cacert 文件中,連接到 web 服務時就不再需要指示任何內容。

我目前正在跳過KeyStoreTrustStore驗證來調用 web 服務。

這是我的代碼:

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);
    }
}
問題暫未有回復.您可以查看右邊的相關問題.
1 導入到cacert中時是否緩存了證書?

我使用keytool將證書導入到/ jre / lib / security / cacerts文件中。 導入證書后,我測試了我的Java應用程序(以防止“ PKIX路徑構建失敗”)並且它可以正常工作。 然后,我從cacerts刪除了證書,並希望再次獲得“ PKIX路徑構建失敗”的信息,但是 ...

2 無法在cacert中導入證書

我有JAVA_HOME=C:\\Users\\myuser\\jdk1.8.0_65 Eclipse中的JRE Sytem庫指向C:\\Users\\myuser\\jdk1.8.0_65 java -version提供C:\\Users\\myuser\\jdk1.8.0_65 ...

3 從文本文件導入以前導出的Access SQL查詢

我使用這篇文章的答案將查詢導出到文本文件,以便進行查找/替換練習: 使用VBA將所有MS Access SQL查詢導出到文本文件 我繼承了一個數據庫,該數據庫具有對象名稱,banker1,banker2等,並進行了硬編碼,因此我不得不創建其他文件。 我導出了所有查詢,並用新名稱替換 ...

5 使用XP批處理文件將p12證書導入到證書(本地計算機)\\個人存儲中

我正在嘗試使用Windows XP批處理文件來自動將.p12證書導入MMC“證書”管理單元所謂的證書(本地計算機)\\個人\\證書 certmgr.msc可能是用於此目的的正確工具,但我已經嘗試過 還有一些沒有成功。 通常,MMC只是在打開證書的情況下打開。因此,我還沒有看到任何 ...

6 無法使用Sun的代碼將CA導入cacert

我正在嘗試使我的程序可以將自簽名CA從遠程添加到本地Java信任密鑰庫中。 (是的,我知道這很危險,我會說,但是他們不會打擾,所以也不要打擾告訴我“這很危險”。我可以做的就是在config屬性中進行“切換”,這樣不需要使用此功能時可以將其關閉。) 我正在使用的代碼來自此鏈接: ...

8 IIS 將證書導入到哪里?

我正在嘗試復制 IIS 導入的功能。 我有一個需要以編程方式導入證書的應用程序,但它不起作用,因為我似乎錯過了一個步驟。 如果我通過 IIS 導入實用程序導入相同的證書,它可以完美運行。 在代碼中: netsh 綁定失敗,錯誤a specified logon session does no ...

9 無法將證書導入到cacerts

我有一個從我的CAS服務器重定向到的Web應用程序。 但是我有一個例外: 所以我用谷歌搜索了一下,發現了很多關於它的話題。 我發現自己創建的證書必須位於javas cacerts內部。 所以我想出了如何添加它: 但是,我收到以下錯誤消息(德語/英語): 德語: ...

2016-09-08 12:29:00 1 208   ssl/ cas
10 證書存在於cacert文件中,但拋出ssl異常

我在2個不同的服務器上安裝了2個應用程序(1)在glassfish中托管(2)批處理服務器(獨立的Java應用程序)。 這兩個應用程序都使用通用的Java程序(以jar文件的形式)來調用外部服務器。 我正在使用“ CloseableHttpClient”建立與該外部第三方服務器的連接。 從 ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2022 STACKOOM.COM