關於HostnameVerifier介面的解讀

2021-09-25 11:36:43 字數 972 閱讀 8813

在專案中我們需要呼叫https介面請求。我們使用httpclient,構建httpclient物件時涉及到使用hostnameverifier介面例項。

hostnameverifier介面定義如下:

1

public

abstract

inte***ce

hostnameverifier

2

僅乙個方法,引數paramstring為請求位址host;引數paramsslsession是當前請求的sslsession,可以獲取到證書列表,預設實現類defaulthostnameverifier的實現如下:

1

@override

2public

boolean verify(final string host, final

sslsession session) catch (final

sslexception ex)

12return

false;13

}14 }

介面是用於主機名驗證,準確說是驗證伺服器ca證書中的host是否和請求位址host一致,為什麼要進行主機名驗證呢?其實目的是加強一層安全防護,防止惡意程式利用中間人攻擊。

什麼是中間人攻擊?

伺服器向客戶端傳送公鑰。

攻擊者截獲公鑰,保留在自己手上。

然後攻擊者自己生成乙個【偽造的】公鑰,發給客戶端。

客戶端收到偽造的公鑰後,生成加密hash值發給伺服器。

攻擊者獲得加密hash值,用自己的私鑰解密獲得真秘鑰。

同時生成假的加密hash值,發給伺服器。

伺服器用私鑰解密獲得假秘鑰。

fiddler就是通過這種方式截獲https資訊。

上面問題的根源是因為「缺乏身份認證機制」,需要驗證【偽造的】公鑰是否是**伺服器的,我們客戶端httpclient可以通過驗證公鑰中的host,防止被中間人攻擊。

關於程式關於世界

首先,在學了1年多的軟體設計的基礎上,問下自己 程式是什麼?業務需求是什麼?程式有什麼用?什麼是演算法?什麼是資料庫?或許每個人的理解不同,會給出不同的答案。那麼自己的理解 程式是乙個讓計算機工作的流程,在程式寫好之後,計算機就會按照,程式設計師定義好流程在執行。其實很多時候,乙個程式的好壞,在於乙...

關於血液關於軟體

1 自然沉降法 將血袋垂直吊掛於4 2 冰箱內,使紅細胞自然下沉1 3d,或將血袋呈70 80 角立於冰箱,需用時,用一次性分漿器分出血漿,制得濃縮紅細胞。2 洗滌法 一般用生理鹽水反覆洗滌3 6次。經洗滌的紅細胞,除白細胞和血小板減少外,血漿蛋白也極少,紅細胞中殘存的血漿蛋白含量約為原總蛋白的1 ...

關於冷漠,關於愛情

我不知道為什麼今天又莫名其妙開始思考愛情這件事,隨之就解決了我一直無法面對冷漠這件事 被冷漠是我始終無法消化的一件事,每當遇見冷漠時,我總會覺得就像一團火把自己燒得面目全非,但對方卻毫無傷害。但我突然懂了,遇到冷漠時,體面的離開即可 在乎你的人一定會在你離開後,找到你跟你解釋為什麼 連解釋都來不及,...