httpclient傳送資料建立SSL連線時向HTTPS的異常
異常訊息如下:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertget 完成.
原因:伺服器的憑證不被信任。一般是這樣造成的。
使用KEYTOOL工具建立證書,然後用TOMCAT啟動後,在瀏覽器開啟網站時,會出現證書不被信任的提示。當然,利用HTTPCLIENT向服務端HTTPS傳送資料時,HTTPCLIENT也會偵測服務端的憑證是否被信任,不被信任就拋出上面的例外。
解決辦法有兩種,一種是讓憑證被客戶端信任。另一種是使用HTTPCLIENT傳送資料時不偵測伺服器憑證是否可信。
第一種辦法,使證書被信任。
找正規CA簽發證書,或是自己簽發證書(只能那一台客戶機上可信)。找正規CA簽發證書就不說了,自己簽發證書呢,見我的其他文章。
我發現,自己簽署的憑證弄好之後,從客戶端開啟服務端位址時,不再提示上面的錯誤,但是還是不能傳送資料。原因是什麼呢?因為那台憑證在客戶端作業系統上可信,但是在JAVA的KEYSTORE裡不可信,要把服務端的憑證導入KEYSTORE庫中
導入辦法:
打開命令列窗口,並到
keytool -import -noprompt -keystore cacerts -storepass changeit -alias yourEntry1 -file your.cer
。
要注意的是,如果客戶端電腦上裝有許多個JAVA版本,要確定你導入的證書的JAVA版本是你TOMCAT使用的那個,一般TOMCAT使用的是環境變量指向的那個JAVA版本。
如果是在ECLIPSE中建立的TOMCAT伺服器,新建時會要你選擇預設JRE還是指向的JAVA,這裡一定要選指向剛才導入的那個JAVA的路徑,不然,你導入的憑證庫也沒效果。
第二種辦法,使用HTTPCLIENT時不檢測伺服器憑證是否可信任
擴充HttpClient 類實作自動接受憑證
因為此方法接收所有安全性, 所以在使用這種方法前請仔細考慮您的系統的安全需求。具體的步驟如下: •提供一個自訂的socket factory (test.MySecureProtocolSocketFactory )。這個自訂的類別必須實作介面org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory ,在實作介面的類別中呼叫自訂的X509TrustManager(test.MyX509TrustManager) ,這兩個類別可以在隨本文帶的配件中得到•建立一個org.apache.commons.httpclient.protocol.Protocol 的實例,指定協定名稱和預設的連接埠號碼Protocol myhttps = new Protocol("https", new MySecureProtocolSocketet (Factory), 443);•註冊剛剛建立的https 協定物件
Protocol.registerProtocol("https ", myhttps);
•然後依照一般程式設計 方式開啟https 的目標地址,程式碼如下:
•然後依照一般程式設計 方式打開

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Kernelsecuritycheckfailure(內核檢查失敗)就是一個比較常見的停止代碼類型,可藍屏錯誤出現不管是什麼原因都讓很多的有用戶們十分的苦惱,下面就讓本站來為用戶們來仔細的介紹一下17種解決方法吧。 kernel_security_check_failure藍色畫面的17種解決方法方法1:移除全部外部裝置當您使用的任何外部裝置與您的Windows版本不相容時,則可能會發生Kernelsecuritycheckfailure藍色畫面錯誤。為此,您需要在嘗試重新啟動電腦之前拔下全部外部裝置。

Flask-Security:在Pythonweb應用程式中添加用戶身份驗證和密碼加密隨著互聯網的不斷發展,越來越多的應用程式需要用戶身份驗證和密碼加密來保護用戶資料的安全性。而在Python語言中,有一個非常流行的Web架構-Flask。 Flask-Security是基於Flask框架的擴充庫,它可以幫助開發人員在Pythonweb應用程式中輕

NginxProxyManager安全性分析與防護引言:在網路應用中,安全性一直是至關重要的問題。作為一款強大的反向代理和負載平衡伺服器軟體,Nginx在保障網路應用安全上扮演著重要的角色。然而,隨著網路技術的不斷發展,網路攻擊日益增多,如何保障NginxProxyManager的安全性成為了亟待解決的問題。本文將從NginxProxyMana

在後台管理系統中,通常需要存取權限控制,以限制不同使用者對介面的存取能力。如果使用者缺乏特定權限,則無法存取某些介面。本文將用waynboot-mall專案舉例,跟大家介紹常見後管系統如何引入權限控制框架SpringSecurity。大綱如下:waynboot-mall專案網址:https://github.com/wayn111/waynboot-mall一、什麼是SpringSecuritySpringSecurity是一個基於Spring框架的開源項目,旨在為Java應用程式提供強大且靈活的安

BubblePal 是一款新推出的基於人工智慧的互動玩具,如果它不是上週剛推出的話,它似乎可能會為 2022 年科幻/恐怖電影 M3GAN 的編劇帶來靈感。基於大語言模型(LLM)技術,‘

BubblePal 是一款新推出的基於人工智慧的互動玩具,如果它不是上週剛推出的話,它似乎可能會為 2022 年科幻/恐怖電影 M3GAN 的編劇帶來靈感。基於大語言模型(LLM)技術,‘

一個被稱為「0.0.0.0 Day」缺陷的存在 18 年的漏洞已被披露,該漏洞允許惡意網站繞過主要網路瀏覽器(包括 Google Chrome、Mozilla Firefox 和 Apple Safari)中的安全協議。缺陷主要是
