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

Chr*_*ski 14 kubernetes

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

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

Sar*_*ran 11

如果您tls.cert在 Kubernetes TLS Ingress Configuration中的key 中添加多个证书。请这样做

-----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-----
Run Code Online (Sandbox Code Playgroud)

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

始终将主证书放在首位。

  • 这不适用于谷歌云,仅使用 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 作为分隔符。也没有必要将每个证书放在一行中。 (4认同)
  • 今天使用 GKE Ingress 和 K8s Secret 进行了测试。工作得很好。使用 SSLLabs 进行测试和验证 https://www.ssllabs.com/ssltest/ (2认同)
  • 我不认为这实际上存在“-----开始中级证书-----”我现在已经用谷歌搜索了一段时间,可以找到除你的之外的任何其他示例。最重要的是它对我不起作用。当我使用“-----BEGIN CERTIFICATE-----”作为底部的中间部分时,它确实起作用了。 (2认同)

Vam*_*e_D 7

使用此命令创建证书

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-----
Run Code Online (Sandbox Code Playgroud)

参考官方文档


Chr*_*ski 6

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

  • 我创建了一个新的 .crt 文件,并将“.crt”文件的内容放在顶部,然后粘贴“.ca-bundle”文件的内容。 (4认同)
  • 执行类似 `cat example_com.crt example_com.ca-bundle &gt; full_example_com.crt` 的操作,然后将 `full_example_com.crt` 文件传递​​给 `kubectl` --cert 参数;) (3认同)

小智 5

萨兰提出的解决方案对我有用,除了我必须删除第二部分中的“中间”

-----BEGIN CERTIFICATE-----
<put your certificate value in a single line >
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<put your **intermediate** certificate value in a single line>
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

遵循 Saran 的指示 => 始终将主证书放在第一位。