0

我想在 Kubernetes 集群上设置通配符域证书。

我从我的 CA 获得了一个 crt/密钥对和一个中间 crt

我创建了一个引用 crt/key 对的 Secret(我尝试过使用和不使用中间 crt)

apiVersion: v1
data:
  tls.crt: LS0tLS1CRUd...
  tls.key: LS0tLS1CRUd...
kind: Secret
metadata:
  name: wildcard-key-pair
type: kubernetes.io/tls

然后我创建了一个证书和相关的颁发者,使用 cert-manager 并遵循他们来自https://docs.cert-manager.io/en/latest/tasks/issuers/setup-ca.html的文档

apiVersion: certmanager.k8s.io/v1alpha1
kind: Issuer
metadata:
  name: wildcard-issuer
  namespace: default
spec:
  ca:
    secretName: wildcard-key-pair
---
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
  name: wildcard
  namespace: default
spec:
  secretName: wildcard-tls-secret
  dnsNames:
    - '*.example.com'
    - example.com
  commonName: '*.example.com'
  organization:
    - example
  issuerRef:
    name: wildcard-issuer
    kind: Issuer

但是当我使用 kubectl 描述我的证书时,我收到以下错误:

Error getting keypair for CA issuer: certificate is not a CA

我对让我的通配符 dns 在我的 kubernetes 集群上工作的整个过程有点困惑,所以如果你有任何想法可以为我指明正确的方向,请不要犹豫分享你的想法。

4

1 回答 1

1

正如@johnharris85 提到的,如果您正在使用您的证书,请确保您的证书具有 CA 标志为真。您可以通过

$ openssl x509 -text -noout -in ca.crt |grep "CA:"

输出应该是CA:TRUE.

希望能帮助到你!

于 2019-05-15T14:08:26.013 回答