ETCD 安全模式

Let us configure etcd to provide simple HTTPS transport security step by step:

让我们一步一步配置 etcd 来提供简单的 HTTPS 传输安全:

$ etcd --name infra0 --data-dir infra0 \

–cert-file=/path/to/server.crt --key-file=/path/to/server.key \

–advertise-client-urls=https://127.0.0.1:2379 --listen-client-urls=https://127.0.0.1:2379

应该可以启动,可以通过使用 HTTPS 访问 etcd 来测试配置:

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

该命令应该显示握手成功。 由于我们用自己的证书颁发机构使用自签名证书,CA必须使用--cacert选项传递给curl。 另一种可能性是将CA证书添加到系统的可信证书目录(通常位于 /etc/pki/tls/certs 或 /etc/ssl/certs)中。

OSX 10.9+ 用户: curl 7.30.0 在 OSX 10.9+ 不能理解通过命令行传递的证书. 取而代之的,将虚拟 ca.crt 直接导入 keychain 或给 curl 添加-k 标志来忽略错误。 要测试没有-k'标志,运行 open ./fixtures/ca/ca.crt` 并按照提示进行操作。 测试后请删除此证书! 如果有解决方法,请告诉我们。

三、用HTTPS客户端证书的客户端到服务器端认证


现在我们已经给了 etcd 客户端验证服务器身份和提供传输安全性的能力。我们也可以使用客户端证书来防止对 etcd 未经授权的访问。

客户端将向服务器提供证书,服务器将检查证书是否由CA签名,并决定是否服务请求。

为此需要第一个示例中提到的相同文件,以及由同一证书颁发机构签名的客户端(client.crtclient.key) 密钥对。

$ etcd --name infra0 --data-dir infra0 \

–client-cert-auth --trusted-ca-file=/path/to/ca.crt --cert-file=/path/to/server.crt --key-file=/path/to/server.key \

–advertise-client-urls https://127.0.0.1:2379 --listen-client-urls https://127.0.0.1:2379

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

$ 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),我们如下启动 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

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

😝朋友们如果有需要的话,可以联系领取~

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

2️⃣视频配套工具&国内外网安书籍、文档
① 工具

② 视频

image1

③ 书籍

image2

资源较为敏感,未展示全面,需要的最下面获取

在这里插入图片描述在这里插入图片描述

② 简历模板

在这里插入图片描述

因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值