搜尋
首頁後端開發C#.Net教程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庫中

 

導入辦法:

打開命令列窗口,並到libsecurity 目錄下,執行下面的指令:

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 的目標地址,程式碼如下:

•然後依照一般程式設計 方式打開

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
解决kernel_security_check_failure蓝屏的17种方法解决kernel_security_check_failure蓝屏的17种方法Feb 12, 2024 pm 08:51 PM

Kernelsecuritycheckfailure(内核检查失败)就是一个比较常见的停止代码类型,可蓝屏错误出现不管是什么原因都让很多的有用户们十分的苦恼,下面就让本站来为用户们来仔细的介绍一下17种解决方法吧。kernel_security_check_failure蓝屏的17种解决方法方法1:移除全部外部设备当您使用的任何外部设备与您的Windows版本不兼容时,则可能会发生Kernelsecuritycheckfailure蓝屏错误。为此,您需要在尝试重新启动计算机之前拔下全部外部设备。

Nginx Proxy Manager安全性分析与防护Nginx Proxy Manager安全性分析与防护Sep 28, 2023 pm 01:30 PM

NginxProxyManager安全性分析与防护引言:在互联网应用中,安全性一直是至关重要的问题。作为一款强大的反向代理和负载均衡服务器软件,Nginx在保障网络应用安全上起着重要的作用。然而,随着互联网技术的不断发展,网络攻击日益增多,如何保障NginxProxyManager的安全性成为了亟待解决的问题。本文将从NginxProxyMana

Flask-Security: 在Python web应用程序中添加用户身份验证和密码加密Flask-Security: 在Python web应用程序中添加用户身份验证和密码加密Jun 17, 2023 pm 02:28 PM

Flask-Security:在Pythonweb应用程序中添加用户身份验证和密码加密随着互联网的不断发展,越来越多的应用程序需要用户身份验证和密码加密来保护用户数据的安全性。而在Python语言中,有一个非常流行的Web框架——Flask。Flask-Security是基于Flask框架的一个扩展库,它可以帮助开发人员在Pythonweb应用程序中轻

Spring Security权限控制框架使用指南Spring Security权限控制框架使用指南Feb 18, 2024 pm 05:00 PM

在后台管理系统中,通常需要访问权限控制,以限制不同用户对接口的访问能力。如果用户缺乏特定权限,则无法访问某些接口。本文将用waynboot-mall项目举例,给大家介绍常见后管系统如何引入权限控制框架SpringSecurity。大纲如下:waynboot-mall项目地址:https://github.com/wayn111/waynboot-mall一、什么是SpringSecuritySpringSecurity是一个基于Spring框架的开源项目,旨在为Java应用程序提供强大和灵活的安

BubblePal AI companion toy for kids launches with eerily similar concept to sci-fi flick M3GAN <sup style=\"font-size:0.5em;color:#999\" title=\"BubblePal AI companion toy for kids lBubblePal AI companion toy for kids launches with eerily similar concept to sci-fi flick M3GAN <sup style=\"font-size:0.5em;color:#999\" title=\"BubblePal AI companion toy for kids lAug 15, 2024 pm 12:53 PM

BubblePal, a newly launched AI-based interactive toy, appears to be something that could have inspired the writers of the 2022 sci-fi/horror flick M3GAN, if it hadn’t just been launched last week. Based on large language model (LLM) technology, the ‘

Whale Address Continues to Dump SUN, Sparking Concern Among InvestorsWhale Address Continues to Dump SUN, Sparking Concern Among InvestorsSep 13, 2024 pm 09:11 PM

A large whale address, which previously offloaded significant amounts of SUN, has sold another $1 million worth of the token within the past two hours.

Telegram Meme Coins Threaten to Break Ton NetworkTelegram Meme Coins Threaten to Break Ton NetworkAug 29, 2024 pm 09:56 PM

Telegram meme coins have been in the spotlight for a while due to the overly successful mini-Apps technology on the messaging platform.

SpringBoot Security如何实现单点登出并清除所有tokenSpringBoot Security如何实现单点登出并清除所有tokenMay 14, 2023 pm 01:43 PM

需求A、B、C系统通过sso服务实现登录A、B、C系统分别获取Atoken、Btoken、Ctoken三个token其中某一个系统主动登出后,其他两个系统也登出至此全部Atoken、Btoken、Ctoken失效记录tokenpom文件引入依赖Redis数据库依赖hutool:用于解析tokenorg.springframework.bootspring-boot-starter-data-rediscn.hutoolhutool-all5.7.13token存储类实现AuthJdbcToken

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境