我正在编写一个配置守护进程。
它是这样工作的:
接受
获取(读取)
POST(更新)
PUT(创建)
删除(删除)
方法
例子:
PUT http://server1/key
(身体=价值)
在键下存储值
GET http://server1/key
在响应正文中返回值
现在,当执行 PUT、POST、DELETE 时,它会复制此请求并将其发送给对等方,这样每个节点都具有相同的数据,并且可以在其中一个节点不可用的情况下查询任何节点。它添加了一个标头,以便节点知道他们不应该复制请求并将其发送到其他节点。
好的,到目前为止,这有效,但现在我只想允许节点和 WebUI 能够将请求传输到这些节点。这就是 TLS 发挥作用的地方。
据我所知,我需要一个 rootCA,所以我可以签署服务器和客户端证书。而且我想要有效的证书,而不是“自签名”,因为我会使用 Go 和 crypto/tls 并且它应该验证证书。
我的问题是:
每个证书需要哪些扩展名或字段?当新节点添加到配置服务器池时,我不想重新生成服务器和客户端证书。
我会通过 IP 地址连接,而不是通过主机名/dnsname(通过将 IP 分配给他们自己的 dnsname 来跳过主机名查找和第三方的潜在窃听,例如 s1.myserver.com 是我的 IP 1.2.3.4 和随机伙计创建一个带有 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 身份验证”?
白衣染霜花
喵喔喔
相关分类