文档未指定如何添加中间SSL证书:https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
我想下一步是阅读Kubernetes源代码。
答案 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-----
答案 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.crt
、ca.intermediate.crt
和 ca.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