如何向Kubernetes入口TLS配置添加中间SSL证书?

时间:2017-08-21 11:32:54

标签: kubernetes

文档未指定如何添加中间SSL证书:https://kubernetes.io/docs/concepts/services-networking/ingress/#tls

我想下一步是阅读Kubernetes源代码。

4 个答案:

答案 0 :(得分:5)

必须将其附加到同一文件中。就像nginx一样。

答案 1 :(得分:5)

使用此命令创建证书

kubectl create secret generic tlscert_with_ca --from-file=tls.crt=your_cert.crt --from-file=tls.key=your_key.key --from-file=ca.crt=your_ca.crt

顺便说一句,your_ca.crt也可以是中间证书

它对我有用,nginx-inginx-controller中的证书应该像这样

-----BEGIN CERTIFICATE-----
your_cert
-----END CERTIFICATE-----

-----BEGIN RSA PRIVATE KEY-----
your_key
-----END RSA PRIVATE KEY-----

-----BEGIN CERTIFICATE-----
your_intermediate
-----END CERTIFICATE-----

参考official doc

答案 2 :(得分:0)

如果您在Kubernetes TLS入口配置的tls.cert密钥中添加了多个证书。请这样做

-----BEGIN CERTIFICATE-----
<put your certificate value in a single line >
-----END CERTIFICATE-----
-----BEGIN INTERMEDIATE CERTIFICATE-----
<put your certificate value in a single line>
-----END INTERMEDIATE CERTIFICATE-----

否则,您将在ssl证书链验证中遇到错误。

始终将主要证书放在首位。

答案 3 :(得分:0)

中间 SSL 证书 (ca.intermediate.crt) 作为第二个证书包含在 k8s tls.crt 字段中。

tls.crt 包括三个由 \n 分隔的文件:server.crtca.intermediate.crtca.crt

这是一个设置证书的 Ansible 任务:

- hosts: localhost
  connection: local
  vars:
     wildcard_foo_com_ssl_tls_crt:
       - "{{ lookup('file', './ssl_certs/star_foo_com/server.crt') }}"
       - "{{ lookup('file', './ssl_certs/star_foo_com/ca.intermediate.crt') }}"
       - "{{ lookup('file', './ssl_certs/star_foo_com/ca.crt') }}"
     wildcard_foo_com_ssl_tls_key: "{{ lookup('file', './ssl_certs/star_foo_com/server.key') }}"

  - name: Set up foo.com Certs
    k8s:
      state: present
      definition:
        apiVersion: v1
        kind: Secret
        metadata:
          name: name-com-wildcard-foo-com
          namespace: prod
        type: kubernetes.io/tls
        data:
          tls.crt: "{{ wildcard_foo_com_ssl_tls_crt | join('\n') | b64encode }}"
          tls.key: "{{ wildcard_foo_com_ssl_tls_key | b64encode }}"
          # ca.crt: this key seems to be ignored