建立https連結的SLL驗證證書失效問題
使用jsoup爬取解析網頁時,出現瞭如下的異常情況。
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1627) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:204) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:198) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:994) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:142) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:533) at sun.security.ssl.Handshaker.process_record(Handshaker.java:471) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:904) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1132) at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:643)
查明是無效的SSL證書問題。由於現在很多網站由http全站升級到https,可能是原站點SSL沒有部署好,導致證書無效,也有可能是其證書本身就不被認可。對於爬取其網頁就會出現證書驗證出錯的問題。 對於使用Jsoup自帶介面來下載網頁的,最新版本的1.9.2有validateTLSCertificates(boolean false)介面即可。
Jsoup.connect(url).timeout(30000).userAgent(UA).validateTLSCertificates(false).get()
java預設的證書集合裡面不存在對於多數自注冊的證書,對於不使用第三方庫來做http請求的話,我們可以手動
建立TrustManager public static InputStream getByDisableCertValidation(String url) { TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } public void checkClientTrusted(X509Certificate[] certs, String authType) { } public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }; HostnameVerifier hv = new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } }; try { SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier(hv); URL uRL = new URL(url); HttpsURLConnection urlConnection = (HttpsURLConnection) uRL.openConnection(); InputStream is = urlConnection.getInputStream(); return is; } catch (Exception e) { } return null; }
refer:
http://snowolf.iteye.com/blog/391931
http://stackoverflow.com/questions/1828775/how-to-handle-invalid-ssl-certificates-with-apache-httpclient
相關推薦
建立https連結的SLL驗證證書失效問題
爬取網頁遇到的目標站點證書不合法問題。 使用jsoup爬取解析網頁時,出現瞭如下的異常情況。 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path
request發送HTTPS請求(處理SSL證書驗證)
瀏覽器 code erro 發送 傳輸層 查看 抓包 .com tcp連接 1、SSL是什麽,為什麽發送HTTPS請求時需要證書驗證? 1.1 SSL:安全套接字層。是為了解決HTTP協議是明文,避免傳輸的數據被竊取,篡改,劫持等。 1.2 TSL:Tran
golang實現https請求跳過證書驗證
請求 https 網站跳過證書驗證 在用 Golang 發起https請求時出現以下錯誤,因為證書是未經過認證的,而是自己建立的。 錯誤資訊:Get https://192.169.0.199:8080/Versty/app: x509: certificate signed by unkn
解決httpclient 4.5 https請求跳過證書驗證
public class SslUtil { public static CloseableHttpClient SslHttpClientBuild() { Registry<Con
阿里雲(CentOS+Apache) 獲取免費SSL證書並配置多個https連結
由於微信小程式需要使用https配置伺服器,剛好之前購買了3年的阿里雲ECS,故研究了一下,特此Mark下。首先,需要在阿里雲有個萬網的域名,之前做專案下了血本,買了好幾個,剛好還有庫存,不用再去備案一、阿里雲控制檯-》域名與網站(萬網)-》域名-》域名列表點選操作欄裡的SS
curl請求https禁止驗證證書(釘釘機器人php測試程式碼)
研究釘釘自定義機器人的php測試程式碼,一直返回false,查資料,發現curl請求https需要加上兩個引數(不驗證證書和hosts): curl_setopt($ch, CURLOPT_SSL
HttpClient不驗證證書通過代理模擬登陸HTTPS的例子
Java程式碼 package com; public class HttpClientLoginProxy { public static void main(String[] args) throws Exception{ CookieStore cookieStore = new
HttpClient執行https連結證書安全問題
/** * 獲取可信任https連結,以避免不受信任證書出現peer not authenticated異常 * * @param httpClient * @return */ public static DefaultHttpClient wrapCli
部署國密SSL證書,建立HTTPS加密 “備胎”計劃
隨著中美貿易摩擦的出現,前有針對中興的“七年封禁”,後有針對華為的“斷供”制裁,我國眾多行業領域都需要思考一個問題:如果本行業的核
iOS 蘋果開發證書失效的解決方案(Failed to locate or generate matching signing assets)
attempted can app 根證書 原因 ... emp ati dev 從2月14日開始,上傳程序的同學可能會遇到提示上傳失敗的提示. 並且打開自己的鑰匙串,發現所有的證書全部都顯示此證書簽發者無效. 出現以下情況: Failed to locate or gen
C# https客戶端獲取證書的工具方法
cas cer flag data- 附加 1-1 plain start html 1. 導入證書到個人計算機中2. 獲取證書 [csharp] view plain copy print? private static X509Certificate2
https 調用驗證失敗 peer not authenticated
實現 不同 not org 失敗 下載 efault ltr net https 調用驗證失敗 peer not authenticated 報錯日誌: Caused by: javax.net.ssl.SSLPeerUnverifiedException: pe
https CA自簽名證書,並給Webserver頒發證書
extension there form nal 3.2 vim city append cor **CA主機執行命令** [root@centos7 ~]# cd /etc/pki/CA [root@centos7 CA]# touch index.txt [root@c
無法與伺服器建立安全連結
http://www.cocoachina.com/bbs/read.php?tid=1686383 nscurl --ats-diagnostics --verbose https://baidu.com驗證你的伺服器ATS是否PASS,如果沒有那服務端Nginx上配置TLSV1
棧的建立-----用連結串列實現棧
設計: 1、建立Node節點類(儲存連結串列的前節點和本節點儲存的元素) 2、節點儲存的是泛型資料 3、建立一個棧的介面----定義如下函式: 4、介面實現類(棧頂元素指標和連結串列元素計數器) 程式碼實現: 介面類:StackADT publi
ubuntu資料夾建立軟連結方法
原文連結:https://blog.csdn.net/jiuyueguang/article/details/9350859 1:預備知識 -s 是代號(symbolic)的意思。 這裡有兩點要注意:第一,ln命令會保持每一處連結檔案的同步性,也就是說,不論你改動了哪一處,其它的檔案
資料結構(連結串列系列):連結串列建立,連結串列刪除特定節點,連結串列氣泡排序,連結串列快速排序
一、連結串列的理解: 1,各個節點間地址存放可以不連續,雖說是表,但是指標存在是為了找到其他的節點,如果連續了,都沒必要用連結串列了。 2,各節點依賴上一節點,要找到某一個節點必須找到他的上一個節點,所以要訪問連結串列,必須要知道頭指標,然後從頭指標訪問開始。 3,各節點間原來是獨立的,本
Android使用Glide載入https連結的圖片不顯示的原因
平時我們使用Glide載入http網址的圖片的時候,圖片可以正常加載出來,但是如果伺服器端加上了安全認證,當載入自簽名的https圖片的時候就會報如下錯誤(證書路徑驗證異常)。 我們如果不修改Glide的程式碼的話,是會出現 javax.net.ssl.SSLHandshakeExceptio
ubuntu14.04配置apache https訪問(ssl證書來源阿里雲)
ubuntu14.04配置apache https訪問(ssl證書來源阿里雲) 針對ubuntu14.04 版本的配置,其他版本資料夾位置不一樣只能當做參考 首先去阿里雲上申請證書,成功後下載到一個apache版本證書 遠端連線linux桌面 cd /etc/apach
uboot的主Makefile中變數MKCONFIG中建立符號連結相關問題
在uboot的主Makefile中,定義了一個變數:MKCONFIG := $(SRCTREE)/mkconfig。 該MKCONFIG 變數即為源程式目錄下的mkconfig指令碼檔案,該檔案在uboot的前期配置操作時會用到。 x210_sd_conf