首页 >后端开发 >Golang >从客户端获取 TLS 信息

从客户端获取 TLS 信息

WBOY
WBOY转载
2024-02-09 12:27:091250浏览

从客户端获取 TLS 信息

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中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除