LOADING

加载过慢请开启缓存 浏览器默认开启

记一次局域网内.lan域名的证书自签名并挂载到Ingress

前言

在Authentik的折腾中由于我们没有https导致passkey无法使用

并且想使用passkey必须要可用的证书 Chrome提示什么不安全的连接即使有https也是无法使用的

所以我们需要给.lan域名签一个证书并信任他

开始折腾

妈的傻逼ChatGPT 让我给*.lan域名去签名

根本用不了

这里要注意的点就是域名只能签诸如*.k8s.lan这样的通配符

以下命令在Master节点上执行就好

openssl genpkey -algorithm RSA -out private.key
openssl req -new -key private.key -out csr.csr

新建一个san.cnf文件 写上如下内容

[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name

[req_distinguished_name]

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.k8s.lan
DNS.2 = www.example.com

然后保存继续输入

openssl x509 -req -in csr.csr -signkey private.key -out certificate.crt -extfile san.cnf -extensions v3_req -days 3650

将生成一张有效期10年 给*.k8s.lan使用的证书

然后scp把certificate.crt这个证书拷贝下来 并且添加到受信任的根证书签发机构

然后把证书添加到Secret

这里要注意的是,Secret必须与Ingress配置处于同一个命名空间 否则Controller认不到

kubectl create secret tls authentik-tls-secret --key private.key --cert certificate.crt -n authentik

然后Ingress配置如下

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: authentik-tls-ingress
  namespace: authentik
  annotations:
    nginx.ingress.kubernetes.io/ssl-passthrough: 'true'
    nginx.ingress.kubernetes.io/ssl-redirect: 'true'
spec:
  tls:
    - hosts:
        - authentik.k8s.lan
      secretName: wildcard-lan-secret
  rules:
    - host: authentik.k8s.lan
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: authentik-server
                port:
                  number: 9000

apply这个yml

不出意外就能以Https访问authhentik.k8s.lan了

ea53d3b3-a441-4918-850b-660cd46ce283.png

后续更新:自建ACME之后只需要信任根证书 这个方法已经弃用了((