### 3 TLS 加密实践
#### 3.1 介绍
`client certificate`: 用于服务端认证客户端,例如etcdctl、etcd proxy、fleetctl、docker客户端。
`server certificate`: 服务端使用,客户端以此验证服务端身份,例如docker服务端、kube-apiserver。
`peer certificate`: 双向证书,用于etcd集群成员间通信。
#### 3.2 配置CA并创建TLS证书
>
> 仅需要在单个节点上生成相关证书即可,然后再把证书复制到其他节点上。
>
>
>
##### 3.2.1 创建ca配置文件 (ca-config.json)
`"ca-config.json"`:可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile;
`"signing"`:表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE;
`"server auth"`:表示client可以用该 CA 对server提供的证书进行验证;
`"client auth"`:表示server可以用该CA对client提供的证书进行验证;
在 `/opt/cfssl/` 下创建配置文件
>
> vim ca-config.json
>
>
>
{
“signing”: {
“default”: {
“expiry”: “87600h”
},
“profiles”: {
“etcd”: {
“expiry”: “87600h”,
“usages”: [
“signing”,
“key encipherment”,
“server auth”,
“client auth”
]
}
}
}
}
##### 3.2.2 创建ca证书签名(ca-csr.json)
“CN”:Common Name,从证书中提取该字段作为请求的用户名 (User Name);浏览器使用该字段验证网站是否合法;
“O”:Organization,从证书中提取该字段作为请求用户所属的组 (Group);
这两个参数在后面的kubernetes启用RBAC模式中很重要,因为需要设置kubelet、admin等角色权限,那么在配置证书的时候就必须配置对了,具体后面在部署kubernetes的时候会进行讲解。
“在etcd这两个参数没太大的重要意义,跟着配置就好。”
创建配置文件
>
> vim ca-csr.json
>
>
>
{
“CN”: “etcd CA”,
“key”: {
“algo”: “rsa”,
“size”: 2048
},
“names”: [
{
“C”: “CN”,
“L”: “shanghai”,
“ST”: “shanghai”
}
]
}
##### 3.2.3 生成ca证书和私钥
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
ls
ca-config.json ca-csr.json ca.csr ca.pem(ca公钥) ca-key.pem(ca私钥,妥善保管)
#### 3.3 生成etcd server端证书
##### 3.3.1 新建ca配置文件 (server-csr.json)
>
> vim server-csr.json
>
>
>
{
“CN”: “etcd”,
“key”: {
“algo”: “rsa”,
“size”: 2048
},
“hosts”: [
“192.168.1.221”,
“192.168.1.222”,
“192.168.1.223”
],
“names”: [
{
“C”: “CN”,
“L”: “shanghai”,
“ST”: “shanghai”
}
]
}
##### 3.3.2 生成etcd server证书和私钥
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=etcd server-csr.json | cfssljson -bare server
ls
ca-config.json ca-csr.json ca-key.pem ca.csr ca.pem server-csr.json server-key.pem server.csr server.pem
#### 3.4 复制证书到另外两台主机
>
> 将证书放到其他节点的同个位置上。
>
>
>
### 4 Etcd集群加入TLS证书
#### 4.1 Etcd集群各节点信息
![在这里插入图片描述](https://img-blog.csdnimg.cn/fd075212e81448e5ac57cbbe49474408.png#pic_center)
#### 4.2 Etcd集群各节点配置
编辑各节点上的配置文件
vim /etc/etcd/etcd.conf
加入TLS证书的配置
[Security]
ETCD_TRUSTED_CA_FILE=“/opt/cfssl/ca.pem”
ETCD_CERT_FILE=“/opt/cfssl/server.pem”
ETCD_KEY_FILE=“/opt/cfssl/server-key.pem”
ETCD_PEER_TRUSTED_CA_FILE=“/opt/cfssl/ca.pem”
ETCD_PEER_CERT_FILE=“/opt/cfssl/server.pem”
ETCD_PEER_KEY_FILE=“/opt/cfssl/server-key.pem”
ETCD_CLIENT_CERT_AUTH=“true”
ETCD_AUTO_TLS=“true”
ETCD_PEER_CLIENT_CERT_AUTH=“true”
ETCD_PEER_AUTO_TLS=“true”
##### 4.2.1 节点1完整配置
#########################################################
########### 请根据各节点服务器实际情况修改配置 ############
#########################################################
#[Member]
#1.节点名称,必须唯一
ETCD_NAME=“etcd01”
#2.设置数据保存的目录
ETCD_DATA_DIR=“/var/lib/etcd”
#3.本节点机器用于监听其他节点的url,url是本机上的2380
ETCD_LISTEN_PEER_URLS=“http://192.168.1.221:2380”
#4.建议本节点用于和其他节点之间通信的url,且会通告集群的其余成员节点
ETCD_INITIAL_ADVERTISE_PEER_URLS=“http://192.168.1.221:2380”
#5.本节点机器用于和客户端通信的url,url是本机上的 2379
ETCD_LISTEN_CLIENT_URLS=“http://192.168.1.221:2379,http://127.0.0.1:2379”
#[Clustering]
#6.建议本节点和客户端通信使用的url
ETCD_ADVERTISE_CLIENT_URLS=“http://192.168.1.221:2379”
#7.集群中所有节点的信息
ETCD_INITIAL_CLUSTER=“etcd01=http://192.168.1.221:2380,etcd02=http://192.168.1.222:2380,etcd03=http://192.168.1.223:2380”
#8.创建集群的token,这个值每个集群均相同
ETCD_INITIAL_CLUSTER_TOKEN=“148e7b13-51fc-4cc8-965b-a7c9d58c18f5”
#9.初始集群状态,新建集群的时候,这个值为new,后续再启动时需要将“new”更改为“existing”
ETCD_INITIAL_CLUSTER_STATE=“new”
#10.flannel操作etcd使用的是v2的API,而kubernetes操作etcd使用的v3的API
为了兼容flannel,将默认开启v2版本,故配置文件中设置
ETCD_ENABLE_V2=“true”
[Security]
ETCD_TRUSTED_CA_FILE=“/opt/cfssl/ca.pem”
ETCD_CERT_FILE=“/opt/cfssl/server.pem”
ETCD_KEY_FILE=“/opt/cfssl/server-key.pem”
ETCD_PEER_TRUSTED_CA_FILE=“/opt/cfssl/ca.pem”
ETCD_PEER_CERT_FILE=“/opt/cfssl/server.pem”
ETCD_PEER_KEY_FILE=“/opt/cfssl/server-key.pem”
ETCD_CLIENT_CERT_AUTH=“true”
ETCD_AUTO_TLS=“true”
ETCD_PEER_CLIENT_CERT_AUTH=“true”
ETCD_PEER_AUTO_TLS=“true”
##### 4.2.2 节点2完整配置
#########################################################
########### 请根据各节点服务器实际情况修改配置 ############
#########################################################
#[Member]
#1.节点名称,必须唯一
ETCD_NAME=“etcd02”
#2.设置数据保存的目录
ETCD_DATA_DIR=“/var/lib/etcd”
#3.本节点机器用于监听其他节点的url,url是本机上的2380
ETCD_LISTEN_PEER_URLS=“http://192.168.1.222:2380”
#4.建议本节点用于和其他节点之间通信的url,且会通告集群的其余成员节点
ETCD_INITIAL_ADVERTISE_PEER_URLS=“http://192.168.1.222:2380”
#5.本节点机器用于和客户端通信的url,url是本机上的 2379
ETCD_LISTEN_CLIENT_URLS=“http://192.168.1.222:2379,http://127.0.0.1:2379”
#[Clustering]
#6.建议本节点和客户端通信使用的url
ETCD_ADVERTISE_CLIENT_URLS=“http://192.168.1.222:2379”
#7.集群中所有节点的信息
ETCD_INITIAL_CLUSTER=“etcd01=http://192.168.1.221:2380,etcd02=http://192.168.1.222:2380,etcd03=http://192.168.1.223:2380”
学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
## 最后
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/ba98ad8d66ec8cdeeee28211b2cb06d1.png)
![img](https://img-blog.csdnimg.cn/img_convert/dab91809cd59d186443dcaf471252bfd.png)
![img](https://img-blog.csdnimg.cn/img_convert/0e07277b21a79f7eb7d18b3ab9ae1cb0.png)
![img](https://img-blog.csdnimg.cn/img_convert/d1865182aa10a3ea7a21c54bf1710481.png)
![img](https://img-blog.csdnimg.cn/img_convert/4bec4b72c26662a66f4b0b55673b2c39.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)
**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**
0964)]
[外链图片转存中...(img-yR0VmHAa-1715846090965)]
[外链图片转存中...(img-QwMIQaUU-1715846090965)]
[外链图片转存中...(img-LMiycd3c-1715846090965)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)
**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**