我是靠谱客的博主 害羞钢笔,最近开发中收集的这篇文章主要介绍ETCD 安全模式,java面试重点总结member1member2member1member2,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

现在尝试发送与上面相同的请求到服务器:

$ curl --cacert /path/to/ca.crt https://127.0.0.1:2379/v2/keys/foo -XPUT -d value=bar -v

该请求会被服务器拒绝:

routines:SSL3_READ_BYTES:sslv3 alert bad certificate

要想请求成功,我们需要将CA签名的客户端证书发送给服务器:

$ curl --cacert /path/to/ca.crt --cert /path/to/client.crt --key /path/to/client.key

-L https://127.0.0.1:2379/v2/keys/foo -XPUT -d value=bar -v

输出为:

SSLv3, TLS handshake, CERT verify (15):

TLS handshake, Finished (20)

还有来自服务器的响应:

{

“action”: “set”,

“node”: {

“createdIndex”: 12,

“key”: “/foo”,

“modifiedIndex”: 12,

“value”: “bar”

}

}

四、集群中的传输安全和客户端证书


对于对等通信,etcd 支持与上述相同的模型,这意味着集群中的 etcd 成员之间的通信。

Assuming we have our ca.crt and two members with their own keypairs (member1.crt & member1.keymember2.crt & member2.key) signed by this CA, we launch etcd as follows:

假设我们有我们的 ca.crt 和两个成员,他们有这个CA签名的自己的 keypairs(member1.crtmember1.keymember2.crtmember2.key

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取

,我们如下启动 etcd:

DISCOVERY_URL=… # from https://discovery.etcd.io/new

member1

$ etcd --name infra1 --data-dir infra1

–peer-client-cert-auth --peer-trusted-ca-file=/path/to/ca.crt --peer-cert-file=/path/to/member1.crt --peer-key-file=/path/to/member1.key

–initial-advertise-peer-urls=https://10.0.1.10:2380 --listen-peer-urls=https://10.0.1.10:2380

–discovery ${DISCOVERY_URL}

member2

$ etcd --name infra2 --data-dir infra2

–peer-client-cert-auth --peer-trusted-ca-file=/path/to/ca.crt --peer-cert-file=/path/to/member2.crt --peer-key-file=/path/to/member2.key

–initial-advertise-peer-urls=https://10.0.1.11:2380 --listen-peer-urls=https://10.0.1.11:2380

–discovery ${DISCOVERY_URL}

etcd 成员将组成一个集群,集群中成员之间的所有通信将使用客户端证书进行加密和验证。etcd的输出将显示其连接的地址使用HTTPS。

五、自动自签名安全


对于需要通信加密而需要认证的情况,etcd 支持使用自动生成的自签名证书来加密其消息。这样可以简化部署,因为不需要管理 etcd 以外的证书和密钥。

使用标志--auto-tls--peer-auto-tls 配置 etcd 为客户端和对等连接使用自签名证书:

DISCOVERY_URL=… # from https://discovery.etcd.io/new

member1

$ etcd --name infra1 --data-dir infra1

–auto-tls --peer-auto-tls

–initial-advertise-peer-urls=https://10.0.1.10:2380 --listen-peer-urls=https://10.0.1.10:2380

–discovery ${DISCOVERY_URL}

member2

$ etcd --name infra2 --data-dir infra2

–auto-tls --peer-auto-tls

–initial-advertise-peer-urls=https://10.0.1.11:2380 --listen-peer-urls=https://10.0.1.11:2380

–discovery ${DISCOVERY_URL}

自签名证书不会对身份进行验证,因此 crul 将返回错误:

curl: (60) SSL certificate problem: Invalid certificate chain

要禁用证书链检查,请使用 -k 标志调用curl:

$ curl -k https://127.0.0.1:2379/v2/keys/foo -Xput -d value=bar -v

六、Etcd proxy 注意事项


如果连接是安全的,etcd proxy 从其客户端终止TLS,并且使用 `–peer-key-file’ 和 ‘–peer-cert-file’ 中指定的代理自己的密钥/证书与 etcd 成员进行通信。

proxy 通过给定成员的 --advertise-client-urls 和 --advertise-peer-urls 与 etcd 成员进行通信。它将客户端请求转发到 etcd 成员的 advertised client url,并通过 etcd 成员的 advertised peer url 同步初始集群配置。

当 etcd 成员启用客户端身份验证时,管理员必须确保代理的 --peer-cert-file 选项中指定的对等证书对于该验证是有效的。如果启用对等身份验证,proxy 的对等证书也必须对对等身份验证有效。

七、FAQ


1、使用TLS客户端身份验证时,我看到 SSLv3 警报握手失败?

golang 的 crypto / tls 包在使用它之前检查证书公钥的 key usage

要使用证书公钥进行客户端认证,我们需要在创建证书公钥时将 clientAuth 添加到 Extended Key Usage

这是怎么做的:

1)将以下部分添加到 openssl.cnf:

[ ssl_client ]

最后

以上就是害羞钢笔为你收集整理的ETCD 安全模式,java面试重点总结member1member2member1member2的全部内容,希望文章能够帮你解决ETCD 安全模式,java面试重点总结member1member2member1member2所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部