首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为Coreos kubernetes aws集群创建员工证书

如何为Coreos kubernetes aws集群创建员工证书
EN

Stack Overflow用户
提问于 2016-08-25 09:46:06
回答 2查看 365关注 0票数 1

好吧,所以我现在不是一个安全专家,和这个斗争了几天,

我正在使用Coreos kube-aws云形成模板制造者,我想将我的集群部署到生产中,但是因为这个小小的评论:

生产注意:不应该使用kube生成的TLS密钥和证书来部署生产Kubernetes集群。每个组件证书的有效期仅为90天,CA的有效期为365天。如果部署生产Kubernetes集群,请考虑首先独立于此工具建立PKI。

我需要生成我自己的密钥,但我似乎不明白如何做到这一点,如果您不熟悉它们的文档(IMHO作为一个非专家)是非常令人愤慨的。

,所以我的要求如下:

  1. 我想证明/钥匙能用上X年(很长时间)
  2. 我希望它们对整个域*.company.com有效(我不关心内部信息,只关心kubectl的管理密钥)
  3. 我想重复这个过程2次(一次用于生产,一次用于QA/阶段),并最终拥有2组凭据。
  4. 重写默认凭据,并使用kube-aws up --export获取群集所需的userdata

我的问题是:

  1. 如何使管理证书对*.company.com有效
  2. 在文档中,他们说您需要为集群中的每个节点创建一个key-pair .什么!kube-aws render只生成了一个工人key-pair,所以怎么做呢!

现在是“有趣”部分:

$ openssl -out ca-key.pem 2048 $ openssl req -x509 -new -nodes -key ca-key.pem -days 10000 -out ca.pem -subj“/CN=kube”

我想-days 10000解决了我在过期时的第一个问题。凉爽的

API-服务器密钥对

openssl.cnf

req req_extensions = v3_req distinguished_name = req_distinguished_name req_distinguished_name basicConstraints = CA:FALSE keyUsage = nonRepudiation,digitalSignature,keyEncipherment subjectAltName = @alt_names alt_names DNS.1 = kubernetes DNS.2 = kubernetes.default DNS.3 = kubernetes.default.svc DNS.4 = kubernetes.default.svc.cluster.local DNS.5 = mycompany.com还是DNS.5 = *.mycompany.com IP.1 = 10.3.0.1 IP.2 = 10.0.0.50

并运行命令

$ openssl.cnf -out apiserver-key.pem 2048 $ openssl req -new -key apiserver-key.pem -out apiserver.csr -subj /CN=kube-apiserver“-config openssl.cnf $ openssl x509 -req -in -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out -out-CAkey ca-key.pem-CAcreateserial-out-CAkey ca-key.pem-CAcreateserial-out-CAkey ca-key.pem-CAcreateserial-out-CAkey ca-key.ssl/en19 en21

好吧,除了我不知道该如何使用的subjectAltName之外,我还可以尝试看看什么才是最酷的。

Worker Keypair

这是我真正被困的地方,我该如何处理这句话:

代码语言:javascript
复制
This procedure generates a unique TLS certificate for every Kubernetes worker node in your cluster

良好的安全性和所有这些都是不现实的,而且在amazon自动标度组中过度杀害了IMO。

因此,如果我不想为每个节点拥有一个密钥,而希望为所有节点设置一个密钥,那么我的worker-openssl.cnf应该如何呢?

req req_extensions = v3_req distinguished_name = req_distinguished_name req_distinguished_name basicConstraints = CA:FALSE keyUsage = nonRepudiation,digitalSignature,keyEncipherment subjectAltName = @alt_names alt_names IP.1 = $ENV::WORKER_IP <- -我在这里应该做什么?

在这之后,创建管理密钥对是直接向前。

请帮帮忙!

EN

回答 2

Stack Overflow用户

发布于 2016-08-28 20:00:27

我能够让它与这个worker-openssl.conf一起工作,使用--对所有工作人员使用相同的证书。可能不是最安全的装置。

代码语言:javascript
复制
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.*.cluster.internal
票数 1
EN

Stack Overflow用户

发布于 2016-08-25 15:34:42

我认为你应该把*.mycompany.com写在你的名字里.也可以指定所有可能的变体,如本手册中所示。

因为您正在运行CoreOS,所以只需要配置云端配置来生成密钥。您不需要为每个节点手动生成它,自动调用应该可以正常工作。

我并没有在amazon上这样做,但我确实使用ssh键和配置在裸金属上手动部署了kubernetes。你可以看看我关于它的博客文章,这里。希望它能对我们有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39141877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档