惜风不起、唯有努力!
ingress-nginx配置SSL

ingress-nginx配置SSL

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

发表回复

您的电子邮箱地址不会被公开。