gpt4 book ai didi

go - TLS 身份验证 : What does each cert need to contain?

转载 作者:数据小太阳 更新时间:2023-10-29 03:29:00 25 4
gpt4 key购买 nike

我正在编写一个配置守护进程。

它是这样工作的:

接受

  • 获取(阅读)
  • POST(更新)
  • PUT(创建)
  • DELETE(删除)

方法

例子:

PUT http://server1/key(主体 = 值)

在键下存储值

获取 http://server1/key

在响应体中返回值

现在,当进行 PUT、POST、DELETE 时,它会复制此请求并将其发送给对等节点,这样每个节点都具有相同的数据,并且在其中一个节点不可用时可以查询任何节点。它添加了一个 header ,以便节点知道它们不应复制请求并发送到其他节点。

好的,目前为止这是有效的,但现在我只想允许节点和 WebUI 能够将请求传输到这些节点。这就是 TLS 发挥作用的地方。

据我所知,我需要一个 rootCA,这样我就可以签署服务器和客户端证书。我想要有效的证书,而不是“自签名”,因为我会使用 Go 和 crypto/tls,它应该验证证书。

我的问题是:

每个证书需要哪些扩展名或字段?当新节点添加到配置服务器池时,我不想重新生成服务器和客户端证书。

我会通过 IP 地址连接,而不是通过主机名/dnsname(通过将 IP 分配给他们自己的 dnsname 来跳过主机名查找和第三方的潜在窃听,例如 s1.myserver.com 是我的 IP 1.2.3.4并且 random dude 使用 random.dude.com 1.2.3.4 创建了一个 DNS 条目,因为我通过对 clustercfg.mydomain.com 进行 NS 查找来获得所有节点的列表)

在每个新节点上我需要创建一个服务器证书(这是我,验证它是真的)

在每个新节点上我需要创建一个客户端证书(这样我就可以验证这个客户端节点是有效的并且被允许访问这个服务器节点)

问题是:

X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature, Key Encipherment, Certificate Sign
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Subject Alternative Name:
DNS:server1.myserver.com, IP Address:2a02::0:0:0:0:0:0:2, IP Address:1.2.3.4

rootCA、服务器证书、客户端证书需要什么才能进行“TLS 身份验证”?

最佳答案

您可以使用普通的服务器证书,就像您在 Web 服务器中使用的证书一样。 Go 会在您连接时正确检查。

至于客户端证书,here is a gist展示如何从 Go 生成和使用客户端证书。

我已将此代码用于客户端联系服务器的类似安全系统。

您不需要通过 IP 地址连接,因为客户端会检查服务器的证书是否与主机名匹配,这是一个非常好的检查。

希望对您有所帮助!

关于go - TLS 身份验证 : What does each cert need to contain?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26427175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com