Kubernetes学习笔记(二十三):TLS
查看Common Name (CN):openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text
Symmetric Encryption:对称加密,使用相同的密钥来加密和解密数据,必须在发送方和接收方之间交换,因此存在风险
Asymmetric Encryption:非对称加密,Private Key和Public Lock
ssh-keygen
生成私钥 id_rsa
和公钥 id_rsa.pub
添加公钥:通常是在服务器SSH授权的下划线密钥文件中添加一个包含公钥的条目来完成的 cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3Nza... user1
ssh-rsa AAAXCV2b8... user2
指定私钥 ssh -i id_rsa user1@server1
使用openssl生成私钥、公钥:
openssl genrsa -out my-bank.key 1024 ## private key
## my-bank.key
openssl rsa -in my-bank.key -pubout > mybank.pem ## public key
## my-bank.key mybank.pem
证书包含:
- 有关谁向该服务器的公钥颁发证书的信息
- 该服务器地址
- ...
生成证书的时候必须带有签名,自签名的证书会被认为非法
Certificate Authority (CA) 负责签署和验证证书,比较著名的有 Symantec、Desert、Comodo、Global Sign 等等
签名的方式:
-
用之前生成的密钥和网站域名生成Certificate Signing Request (CSR)
openssl req -new -key my-bank.key -out my-bank.csr -subj "/C=US/ST=CA/O=MyOrg, Inc./CN=mydomain.com" ## 对于hacker Validate Information会失败 ## my-bank.key my-bank.csr
-
验证通过,Sign and Send Certificate
CA合法性的验证:签名用私钥,所有CA的公钥都存在浏览器中
私有CA:一样的运作方式,为组织内所有浏览器安装私有CA的公钥
Kubernetes要求集群至少有一个证书颁发机构CA,也可以设置多个
之前尝试使用命令行登陆证书过期的https失败
openssl x509 -inform der -in \*.thoughtworks.cn.cer -out certificate.pem
但是缺少私钥,一般会生成公钥和私钥,或者合并为同一份pem文件。
curl --cert certificate.pem --header 'Content-Type: application/json' -d '{"captcha": "111", "captchaId": "captchaId", "password": "password", "username": "user"}' --request POST https://sample.com
更改hosts方法
sudo vim /etc/hosts
如果api-server不可用,用命令查看频繁退出的container的id crictl ps -a | grep kube-apiserver
,并查看日志 crictl logs --tail=2 1fb242055cff8
找出原因 - Container Runtime Interface (CRI)