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 信息的详细内容,更多请关注编程网其它相关文章!