创建客户端证书时如何指定用户及所在的用户组信息(CSR CN,O)

1、概述

在k8s中,当客户端需要通过证书来与api server进行通讯的时候,就需要通过客户端证书的某些字段来表明这个证书所代表的用户、用户组什么,这样当api server收到来自这个证书的请求之后,就可以对这个用户的身份进行认证,进而进行鉴权,然后决定该用户可以做什么。

本文档就介绍下,如何在客户端的证书申请的CSR中指定所在的用户和用户组。

注意:客户端证书中,不需要指定hosts定义。


2、实现方法

2.1、openssl命令

如果使用openssl命令,使用类似如下的命令

openssl req -new -key jbeda.pem -out jbeda-csr.pem -subj "/CN=jbeda/O=app1/O=app2"

即CN(Common Name)表示用户,O表示用户组,如果是多个用户组,那么就用多个O来指定。O代表Oraganization

2.2、cfssl命令

cfssl命令来创建证书的时候,就是要在csr-json文件中指定

{
    "CN": "kubernetes-admin",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "O": "system:masters"
        }
    ]
}

这样通过这个CSR生成的证书就表示用户kubernetes-admin,所在的用户组system:masters

posted @ 2022-01-21 11:41  Zhai_David  阅读(146)  评论(0编辑  收藏  举报