TLS 传输层加密 前身是SSl tls/ssl
只有A去验证B的证书的合法性 单向TLS
双向验证证书合法性 双向TLS 就是mTLS
https=http+tls/ssl
对称加密
加密和解密使用同一个密钥–密码
优点:加密大数据比较快
缺点:密钥不方便传输
常见:AES, DES 加密长度越长越安全
非对称加密
公钥、私钥
数据加密模式:公钥加密,私钥解密
数字签名模式:私钥加密,公钥解密
哈希函数
md5 sha1 sha512
k8s使用的就是mTLS进行通信
访问某个pod的时候,到底要不要TLS认证,这个就要看此pos里程序的配置了
etcd /etc/kubernetes/manifests/etcd.yaml
kube-api /etc/kubernetes/manifests/kube-apiserver.yaml
这些文件里面都有要求 都有指定证书
https的优点
1、整个通信都是被加密的—有效防止流量劫持
2、可以有效的提升搜索引擎的权重
[root@vms60 ~]# curl -vkL https://www1.ck8s.com
* About to connect() to www1.ck8s.com port 443 (#0)
* Trying 192.168.26.82...
* Connected to www1.ck8s.com (192.168.26.82) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* skipping SSL peer certificate verification
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* subject: CN=Kubernetes Ingress Controller Fake Certificate,O=Acme Co
* start date: 5月 06 06:20:13 2022 GMT
* expire date: 5月 06 06:20:13 2023 GMT
* common name: Kubernetes Ingress Controller Fake Certificate # 标识了ca证书的来源
**使用的是ingress-controller里面的证书**
需求1 不使用ingress-controller自带证书,使用自己做的证书
cfssl工具
https://www.****.com/#s/8F8OHyjg
chmod +x *
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl_linux-amd64 /usr/local/bin/cfssl
一、ca的配置
二、申请CA证书
三、创建自签名的CA证书
cfssl print-defaults config > ca-config.json
root@vms81:~/soft/lab-CFSSL# cat ca-config.json
{
"signing": {
"default": {
"expiry": "1680h"
},
"profiles": {
"www": {
"expiry": "8760h",
"usages": [
"signing",
"key encipherment",
"server auth"
]
}
}
}
}
cfssl print-defaults csr > ca-csr.json
root@vms81:~/soft/lab-CFSSL# vim ca-csr.json
{
"CN": "ck8s.com",
"key": {
"algo": "ecdsa",
"size": 256
},
"names": [
{
"C": "CN",
"L": "Xuzhou",
"ST": "Jiangsu",
"O": "Lduan",
"OU": "cks"
}
]
}
cfssl gencert -initca ca-csr.json | cfssljson -bare test-ca # 生成一个自签名的CA,名字是CA证书的前缀
root@vms81:~/soft/lab-CFSSL# ls
ca-config.json ca-csr.json test-ca.csr test-ca-key.pem test-ca.pem
四、客户端配置
cfssl print-defaults csr > client-csr.json
**admin-csr.json 里面的信息必须要与ca保持一致**
root@vms81:~/soft/lab-CFSSL# cat client-csr.json
{
"CN": "ck8s.com",
"key": {
"algo": "ecdsa",
"size": 256
},
"hosts": [
"www1.ck8s.com"
],
"names": [