1. 程式人生 > >CloseableHttpClient載入證書來訪問https網站

CloseableHttpClient載入證書來訪問https網站

對安全性有要求的網站一般使用https來加密傳輸的請求和響應。https離不開證書,關於證書不在多說。Apache的HttpClient支援https,

下面是官方的樣例程式,程式中使用了my.store這個檔案,

這個檔案不是網站的證書,而是一份包含自己密碼的自己的證書庫。這個檔案是需要自己生成的,使用jdk中的keytool命令可以很方便的生成my.store檔案。步驟如下(以支付寶為例):

  1. 瀏覽器(以chrome為例)訪問https://www.alipay.com/,點選域名左側的小鎖,可以檢視支付寶的證書資訊


  2. 將支付包的證書資訊匯出,證書格式有很多中,der、cer等。隨便選擇即可。

  3. 命令列或者shell執行 keytool     -import -alias "my alipay cert" -file www.alipay.com.cert     -keystore my.store,

如果keytool命令不識別,去檢查一下jdk的環境變數是否設定正確。”my alipay cert”是個別名,隨便取。“www.alipay.com.cert”這個檔案就是從瀏覽器中匯出的支付寶的證書。

“my.store”是生成的自己 的證書庫檔案。回車執行,效果如下:

OK,現在可以執行下面的程式碼了:

 package com.yeetrack.httpclient;

    /**

    * Created with IntelliJ IDEA.

    * User: victor

    * Date: 13-10-11

    * Time: 下午3:09

    * To change this template use File | Settings | File Templates.

    */

    import java.io.File;

    import java.io.FileInputStream;

    import java.security.KeyStore;

    import javax.net.ssl.SSLContext;

    import org.apache.http.HttpEntity;

    import org.apache.http.client.methods.CloseableHttpResponse;

    import org.apache.http.client.methods.HttpGet;

    import org.apache.http.conn.ssl.SSLContexts;

    import org.apache.http.conn.ssl.SSLConnectionSocketFactory;

    import org.apache.http.impl.client.CloseableHttpClient;

    import org.apache.http.impl.client.HttpClients;

    import org.apache.http.util.EntityUtils;

 

    /**

    * 程式碼展示瞭如果使用ssl context建立安全socket連線

    */

    public class ClientCustomSSL {

        public final static void main(String[] args) throws Exception {

            KeyStore trustStore  = KeyStore.getInstance(KeyStore.getDefaultType());

            //載入證書檔案

            FileInputStream instream = new FileInputStream(new File("/home/victor/my.store"));

            try {

                trustStore.load(instream, "mypassword".toCharArray());

            } finally {

                instream.close();

            }

            SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(trustStore).build();

            SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext,

                    SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);

            CloseableHttpClient httpclient = HttpClients.custom()

                    .setSSLSocketFactory(sslsf)

                    .build();

            try

            {

                //訪問支付寶

                HttpGet httpget = new HttpGet("https://www.alipay.com/");

                System.out.println("executing request" + httpget.getRequestLine());

                CloseableHttpResponse response = httpclient.execute(httpget);

                try {

                    HttpEntity entity = response.getEntity();

                    System.out.println("----------------------------------------");

                    System.out.println(response.getStatusLine());

                    if (entity != null) {

                        System.out.println(EntityUtils.toString(entity));

                    }

                } finally {

                    response.close();

                }

            } finally {

                httpclient.close();

            }

        }

    } 


相關推薦

CloseableHttpClient載入證書訪問https網站

對安全性有要求的網站一般使用https來加密傳輸的請求和響應。https離不開證書,關於證書不在多說。Apache的HttpClient支援https, 下面是官方的樣例程式,程式中使用了my.store這個檔案, 這個檔案不是網站的證書,而是一份包含自己密碼的自己的證書

Nginx配置SSL證書實現訪問HTTPS網站

一、什麼是 SSL 證書,什麼是 HTTPS SSL 證書是一種數字證書,它使用 Secure Socket Layer 協議在瀏覽器和 Web伺服器之間建立一條安全通道,從而實現: 1、資料資訊在客戶端和伺服器之間的加密傳輸,保證雙方傳遞資訊的安全性,不可被第三方竊

Java程式避開SSL證書問題訪問https網站

部分原創,參考:參考:http://tanyongbing.iteye.com/blog/1855132在專案開發中,有時會遇到與SSL安全證書匯入打交道的,如何把證書匯入java中的cacerts證書庫呢? 其實很簡單,方法如下: 每一步:使用Firefox瀏覽器,進入某個

部分手機無法訪問https網站解決辦法

nginx 手機 https 無法訪問 思想: 最小化操作,對於不熟悉的參數,在不影響使用的前提下,暫時先註銷其功能。 發生錯誤時,先分析產生問題的界限,對於涉及到該界限的擦參數進行處理。 參考實例: 升級了nginx版本後,將原有的配置文件全部復制到新的目錄下,出現部分手機(主要是華為手機自

python爬蟲訪問https網站報錯解決方案ERROR:ssl_client_socket_impl.cc(1098)] handshake failed

報錯資訊: [3488:1356:0512/211222.342:ERROR:ssl_client_socket_impl.cc(1098)] handshake failed; returned -1, SSL error code 1, net_error -101 Chrome瀏覽器解決方

phpstudy配置本地ssl證書訪問https://127.0.0.1

phpstudy配置https可以訪問本地伺服器https://127.0.0.1 首先,開啟apache的編譯ssl模組,如圖開啟phpstudy—其它選項設定—PHP擴張及設定—php擴充套件—php-openssl前面打勾 如圖點選開啟修改httpd.conf配置檔案,開啟找

python2.7 urllib2訪問https 網站出錯

今天發現平時每小時報表內容少了好幾個table ,感覺好奇怪,這個程式碼很穩定跑了好長時間了,不知道哪裡出來問題,幸虧程式碼做了異常處理。否則我估計郵件都會發不出來了,看了下日誌檔案,有報錯日誌記錄如下: ` page = urllib2.urlopen(url, tim

python2.7 urllib2訪問https 網站出錯

turn text 出錯 default led urllib2 上下 open call 今天發現平時每小時報表內容少了好幾個table ,感覺好奇怪,這個代碼很穩定跑了好長時間了,不知道哪裏出來問題,幸虧代碼做了異常處理。否則我估計郵件都會發不出來了,看了下日

使用restTemplate訪問https

@Configuration public class RestTemplateConfig { @Bean public RestTemplate restTemplate() throws KeyStoreException, NoSuchAlgorithmException, K

Cordova下自簽名證書無法訪問https問題(IOS和Android)

最近準備將專案上架到AppStore,但從17年開始,AppStore稽核條件要求所有網路請求都為https,所以就在內網(192.……)布好了自測環境,並將環境對映到了公網(58.……)。接著問題就

chrome訪問自定義證書https網站出現不安全無法訪問問題

解決辦法在chrome啟動目標加入如下引數  最後完整路徑 "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-infobars --ignore-certificate-err

Nginx實現ssl一級、二級域名證書部署並用https訪問代理轉發服務器

www. log 所有 null rec write include cal direct 1. 規劃 域名 解析IP Nginx代理 htpps://www.devcult.com 47.88.10.155 htpps://auto.devcult.c

java獲取https網站證書

puts mat pan abcd trace nal property put app import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import

Java訪問HTTPS證書驗證問題

rar html illegal fault tle 包含 verify boolean mitm 為了盡可能避免安全問題,公司的很多系統服務都逐步https化,雖然開始過程會遇到各種問題,但趨勢不改。最完美的https應用是能實現雙向認證,客戶端用私鑰簽名用服務端公鑰加密

IE打開https網站時,取消證書問題提示

設置 完成 手動 進入 bubuko src 界面 找到 alt 上面介紹了,調用IE來打開對應的網頁問題,但是在實際測試中,有些網站是采用https協議的,這時候IE瀏覽器會彈出如下窗口,一般手動選擇後,才可進入登錄界面,那麽該如何解決呢? 1、點擊【繼續瀏覽此網頁】

八大免費SSL證書-給你的網站免費添加Https安全加密

wid 支持ie alt container gin 擴展 協議 域名解析 獲取 評論? https://www.freehao123.com/top-8-free-ssl-cert/ 文章目錄 Let‘s Encrypt StartSSL SSL Cl

Java生成證書工具類 InstallCert.java解決httpClient訪問https出錯:PKIX path building failed

throw supported load Owner init software roc cti acer 編譯:javac InstallCert.java運行:java InstallCert 要訪問的網址 最後面會輸出: Enter certificate to ad

十二.HTTPS網站安全訪問實踐

crt perm 發送數據 address 輸出信息 style 通過 server1 指定 期中集群架構-第十二章-HTTPS安全證書訪問連接實踐配置========================================= 01:網絡安全涉及的問題: ①

【轉】CA證書申請+IIS配置HTTPS+默認訪問https路徑

網站 加網 剛才 你會 重寫 tin 如果 art 復制 本文非原創,原文地址:https://www.cnblogs.com/lichunting/p/9274422.html 一.CA證書申請 (一). 新StartSSL註冊帳號 1. StartS

關於安卓手機訪問一些網站或者Fiori應用彈出安裝證書的提示

有朋友問遇到在安卓手機上安裝Fiori Client,開啟的時候提示需要安裝證書,如下圖所示: 我在自己的Android手機試了試,因為我沒有裝Fiori Client,所以就用手機瀏覽器直接訪問https://go.sap.com: 彈出了類似的對話方塊。點選取消之後,可以手動輸入使用者名稱和密碼,但