php小編百草將為您介紹如何從客戶端取得TLS資訊。在網站開發過程中,取得客戶端的TLS資訊對於實現一些安全性相關的功能非常重要。 TLS是一種加密協議,用於保護網路通訊的安全。透過取得客戶端的TLS訊息,我們可以取得客戶端的憑證資訊、加密演算法、金鑰長度等相關信息,從而提高網站的安全性。在接下來的文章中,我們將詳細講解如何從客戶端獲取TLS信息,以及如何應用這些信息來增強網站的安全性。
net/http go 套件有一個類型請求,它定義了一個儲存 ConnectionState
的欄位 TLS。不過,描述中的最後一條語句表示它被 HTTP 用戶端忽略。我在調試時也檢查過,它是 nil
。
我需要從該連線狀態(或其他位置)取得值TLSUnique
,以便我可以將其包含在我的憑證請求(又稱CSR)中,然後才能註冊/將其發送到伺服器.
然後,伺服器收到請求,並檢查 CSR 的簽章以及 TLS 唯一值,證明建立 TLS 連線的用戶端與簽署 CSR 的用戶端是同一客戶端。
這是來自 RFC 7030 - 第 3.5 節(EST 協定)的內容
[我正在使用的]
我正在試驗 GlobalSign EST Go 軟體包,但它們似乎不包含此功能。
他們的 EST 客戶端似乎為每個 EST 操作創建一個 http 客戶端,我想我可以改變這種行為並擁有一個客戶端來發送所有請求。
但是,由於客戶端接受 RoundTripper 接口,因此我無法在實作之外使用底層連接的資訊。
一種方法需要對 進行一些小的更改全域符號EST包.
就像我之前所說的,目前的實作為每個 EST 操作(CACerts、CSRAttrs、Enroll 等)建立一個新的 http 用戶端
1- 讓我們為所有 EST 操作使用一個 http 客戶端。
2- 無論哪種方式,我們都需要在註冊 CSR 之前呼叫以取得 CA 憑證。
3-對任何客戶端請求的http回應都會公開欄位http.Response.TLS.TLSUnique
。
4- 讓客戶端將其包含在憑證請求中,對其進行簽名並註冊。
當我想到 全域符號 EST 套件以及為什麼他們選擇每次建立一個新的 http 用戶端。
(除非只是等待根據使用者意願使用的範例)
以上是從客戶端獲取 TLS 信息的詳細內容。更多資訊請關注PHP中文網其他相關文章!