【问题标题】:kubernetes: CA file when deploying via kopskubernetes:通过 kops 部署时的 CA 文件
【发布时间】:2018-06-18 17:33:09
【问题描述】:

我使用kopsaws 上创建了一个集群。

但是,我无法找到证书颁发机构用来生成客户端证书的文件。

kops默认会创建这样的东西吗?

如果是,创建客户端证书的推荐流程是什么?

kops documentation 对此不是很清楚。

【问题讨论】:

    标签: kubernetes kops kubernetes-security


    【解决方案1】:

    我过去曾像 this 那样做:

    1. 从 S3 下载 kops 生成的 CA 证书和签名密钥:
      • s3://<BUCKET_NAME>/<CLUSTER_NAME>/pki/private/ca/*.key
      • s3://<BUCKET_NAME>/<CLUSTER_NAME>/pki/issued/ca/*.crt
    2. 生成客户端密钥:openssl genrsa -out client-key.pem 2048
    3. 生成 CSR:

      openssl req -new \
        -key client-key.pem \
        -out client-csr.pem \
        -subj "/CN=<CLIENT_CN>/O=dev"`
      
    4. 生成客户端证书:

      openssl x509 -req \
        -in client-csr.pem \
        -CA <PATH_TO_DOWNLOADED_CA_CERT> \
        -CAkey <PATH_TO_DOWNLOADED_CA_KEY> \
        -CAcreateserial \
        -out client-crt.pem \
        -days 10000
      
    5. Base64 编码客户端密钥、客户端证书和 CA 证书,并将这些值填充到 config.yml,例如this
    6. 将填充的config.yml 分发给您的开发人员。

    5 和 6 显然可以通过您想要的任何方式分发,不需要为您的开发人员制作 config.yml

    【讨论】:

    • 这很有帮助;谢谢;为所有开发人员保留一个共同的config.yml 或为每个开发人员单独(每个都有自己的密钥/证书)是否被认为是一种好习惯?
    • 我可以为每个开发人员创建一个单独的 config.yml,并使用它自己的密钥/证书。您可以使用证书中的组织信息来映射到 K8s RBAC 中的组,因此您在权限管理方面具有更大的灵活性和简单性。但是,如果您没有使用 RBAC 或任何类型的特殊授权模式,那么这有点争议。
    • 谢谢;你有没有机会知道为什么a)我的~/.kube/config中的certificate-authority-data条目和b)s3://&lt;BUCKET_NAME&gt;/&lt;CLUSTER_NAME&gt;/pki/issued/ca/*.crt的内容不同?不应该只有一个CA 吗?
    • 在此处跟进:stackoverflow.com/questions/48183802/… 以避免扩大讨论,因为这可能是一个不同的问题。
    猜你喜欢
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 2019-05-22
    • 2019-06-02
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多