【问题标题】:Kubernetes change cipher for certificatesKubernetes 更改证书密码
【发布时间】:2020-11-08 23:39:24
【问题描述】:

我一直在研究与 kubeadm 相关的链接,以尝试更改我的 Kubernetes 集群证书上的密码。问题是我需要禁用 DES/3DES,这样这个命令才会失败:

openssl s_client -connect IP:2379 -cipher "DES:3DES" -tls1_2

到目前为止我浏览过的一些链接(如果我把它们都列出来,这篇文章会太长):

我希望更改kube-apiserver 配置以使用这些标志(在/etc/kubernetes/manifests/kube-apiserver.yaml 文件中)会有所帮助,但它没有(请原谅拼写错误,我无法从我必须使用的客户端复制/粘贴) :

...
spec:
  containers:
  - command:
    - kube-apiserver
    - ...
    - --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
    - --tls-min-version=VersionTLS12
    image: k8s.gcr.io/kube-apiserver:v1.18.6
...

我可以在 these guidelines 之后手动重新生成 /etc/kubernetes/pki 中的所有证书,但我希望坚持使用 kubeadm 或其他 Kubernetes 提供的工具来自动处理它。我找不到任何关于我自己手动生成每个文件的文档,这些文档是为完全不熟悉管理的人设置的。

感谢帮助、链接、建议等!不幸的是,在完成之前,我不能使用集群,甚至不能向人们展示功能。

【问题讨论】:

  • 我不确定你想要达到什么目的。您能否告诉我们您的用例的最终目标是什么?你想禁用/更改一些 etcd 证书吗?
  • @OhHiMark 我敢打赌,他所在组织的安全团队正在标记这些漏洞,或者他正在积极尝试强化他的 Kubernetes 环境。
  • @OhHiMark metala1973 所说的 - 这就是确切的场景

标签: kubernetes kubeadm kube-apiserver


【解决方案1】:

在我们使用 kubeadm 在 Ubuntu 16.04 上安装 vanilla kubernetes 1.18.3 时,我们解决了以下问题:

kubelets(端口 10250): 在文件/var/lib/kubelet/config.yaml 中添加:

tlsCipherSuites: [TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA]

通过systemctl restart kubelet.service重启kubelet.service

kube-api-server(端口 6443): 在文件/etc/kubernetes/manifests/kube-apiserver.yaml 中添加一个额外的数组条目spec.containers.command

- --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

如有必要,删除命名空间 kube-system 中的 pod kube-apiserver。

编辑:不要创建例如来自/etc/kubernetes/manifests/kube-apiserver.yaml 的备份文件在同一目录中。 kube-api-server 也会应用这个备份文件。

【讨论】:

  • 我会再试一次,看看是否能解决问题。我想我可能把它放在了错误的位置。你把它放在“规格”下面了吗?
  • 是的。作为command: 数组的参数。它适用于我的 1.18.x 集群。但在 1.17.x 上,我仍在调查中。请发表您的反馈意见。
  • 使用 Kubes v.1.15,它不起作用。仍在挖掘并尽快提供反馈
  • 我认为它比我们想象的 Kubes 如何处理密码更深:github.com/kubernetes/kubernetes/issues/81145github.com/kubernetes/kops/issues/9496。似乎默认情况下,Kubes 使用 HTTP2,并且对它想要用于某些版本的密码很挑剔。看起来 Kubes 1.18 将在这方面提供更大的灵活性
  • 为迟到的响应道歉(谢谢,covid-19) - 我没有成功,但我能够说服管理员,使用多个防火墙后面的 Kubernetes 是可以的。渗透测试没有失败,但扫描失败了。 @schmichri - 我正在尝试将您的建议作为 command: 数组的参数。
猜你喜欢
  • 2018-03-29
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
  • 2013-05-25
  • 2019-12-16
  • 2020-07-11
  • 2019-04-20
相关资源
最近更新 更多