1、制作ssl证书
自签ca,为自签CA生成相应的配置文件和请求文件,如下操作
mkdir /opt/certs && cd /opt/certs
cfssl print-defaults config > ca-config.json #配置文件
cfssl print-defaults csr > ca-csr.json #请求文件
2、修改配置文件和请求文件如下片段
//ca-config.json
"expiry": "876000h" #有效日期改长
//ca-csr.json
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "hangzhou",
"ST": "zhejiang"
}
]
#生成ca证书,会多出3个文件
cfssl gencert -initca ca-csr.json | cfssl-json -bare ca
3、生成服务端和客户端证书
cfssl print-defaults csr > server-csr.json
修改文件
"hosts": [
"nginx.cn",
"yys.nginx.cn",
"*.yys.com",
"*.yys.cn"
],
#生成server证书
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=./ca-config.json -profile=server ./server-csr.json | cfssl-json -bare server
生成client证书
vim client-csr.json
{
"CN": "example.net",
"hosts": [
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "hangzhou",
"ST": "zhejiang"
}
]
}
#生成客户端证书
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client ./client-csr.json | cfssl-json -bare client
至此证书签发完毕,此时会得到如下文件,这里只是简单介绍一下如何自签CA和相关证书。
4、配置ingress为https
创建secret
kubectl create secret tls nginx-tls --cert=ca.pem --key=ca-key.pem -n web
kubectl get secrets -n web
ingress.yaml
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx namespace: web spec: ingressClassName: nginx tls: - hosts: - nginx.yys.cn secretName: nginx-tls rules: - host: nginx.yys.cn http: paths: - path: / pathType: Prefix backend: service: name: nginx-svc port: number: 80
测试: curl -X GET https://nginx.yys.cn -I -k
5、基于openssl证书签发如下
openssl genrsa -out tls.key 2048
openssl req -new -x509 -key tls.key -out tls.crt -days 36500 -subj /C=CN/ST=zhejiang/L=hangzhou/O=devops/CN=test.cn
kubectl create secret tls nginx-test-tls --cert=tls.crt --key=tls.key -n web