佛山电商网站制作团队,wordpress post模板,wordpress卡蜜,网上装修平台哪个最好k8s的ca以及相关证书签发流程 1. kube-apiserver相关证书说明2. 生成CA凭证1.1. 生成CA私钥1.2. 生成CA证书 2. 生成kube-apiserver凭证2.1. 生成kube-apiserver私钥2.2. 生成kube-apiserver证书请求2.3. 生成kube-apiserver证书 3. 疑问和思考4. 参考文档 对于网站类的应用网站管理员需要向权威证书签发机构CA申请证书这通常需要花费一定的费用也有非营利的证书签发机构比如”Let’s Encrypt“可以为用户免费签发证书。但对于Kubernetes这类应用来讲它通常部署在企业内部其管理面组件不需要暴露到公网所以就不需要向外部的证书签发机构申请证书系统管理员就可以自已签发证书供内部使用。
本文通过介绍部分内部组件的ca证书签发流程引导相关的证书签发过程。 1. kube-apiserver相关证书说明
本节我们使用简单的例子介绍一下如何使用openssl签发证书侧重介绍签发证书流程具体证书配置还需要管理员根据实际情况填写。以kube-apiserver为例它的启动参数有3处需要配置证书
--client-ca-file/yourdirectory/ca.crt
--tls-cert-file/yourdirectory/server.crt
--tls-private-key-file/yourdirectory/server.key其中
ca.crt即CA的证书通常Kubernetes各个组件都配置相同的CA证书server.crt即kube-apiserver的证书它将在与客户端建立连接时发送给客户端由客户端进行验证server.key即kube-apiserver的私钥它不会发送给客户端仅用于解密客户端发送的数据。
为了便于理解我们假设有两位管理员参与证书签发流程一位CA管理员负责管理CA的凭证并为他人提供签发证书的服务一位管理员负责为kube-apiserver申请证书。
整体生成证书的流程如下 #mermaid-svg-bYpbKtX0tN5Xbwmi {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bYpbKtX0tN5Xbwmi .error-icon{fill:#552222;}#mermaid-svg-bYpbKtX0tN5Xbwmi .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bYpbKtX0tN5Xbwmi .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-bYpbKtX0tN5Xbwmi .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bYpbKtX0tN5Xbwmi .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bYpbKtX0tN5Xbwmi .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bYpbKtX0tN5Xbwmi .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bYpbKtX0tN5Xbwmi .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bYpbKtX0tN5Xbwmi .marker.cross{stroke:#333333;}#mermaid-svg-bYpbKtX0tN5Xbwmi svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bYpbKtX0tN5Xbwmi .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-bYpbKtX0tN5Xbwmi .cluster-label text{fill:#333;}#mermaid-svg-bYpbKtX0tN5Xbwmi .cluster-label span{color:#333;}#mermaid-svg-bYpbKtX0tN5Xbwmi .label text,#mermaid-svg-bYpbKtX0tN5Xbwmi span{fill:#333;color:#333;}#mermaid-svg-bYpbKtX0tN5Xbwmi .node rect,#mermaid-svg-bYpbKtX0tN5Xbwmi .node circle,#mermaid-svg-bYpbKtX0tN5Xbwmi .node ellipse,#mermaid-svg-bYpbKtX0tN5Xbwmi .node polygon,#mermaid-svg-bYpbKtX0tN5Xbwmi .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bYpbKtX0tN5Xbwmi .node .label{text-align:center;}#mermaid-svg-bYpbKtX0tN5Xbwmi .node.clickable{cursor:pointer;}#mermaid-svg-bYpbKtX0tN5Xbwmi .arrowheadPath{fill:#333333;}#mermaid-svg-bYpbKtX0tN5Xbwmi .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bYpbKtX0tN5Xbwmi .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bYpbKtX0tN5Xbwmi .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-bYpbKtX0tN5Xbwmi .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-bYpbKtX0tN5Xbwmi .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bYpbKtX0tN5Xbwmi .cluster text{fill:#333;}#mermaid-svg-bYpbKtX0tN5Xbwmi .cluster span{color:#333;}#mermaid-svg-bYpbKtX0tN5Xbwmi div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bYpbKtX0tN5Xbwmi :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 生成 生成 生成 生成 生成 生成 生成 生成 生成 生成 生成 生成 生成 ca凭证 ca私钥 ca证书 kube-apiserver凭证 kube-schedule-manager凭证 kube-controller-manager凭证 其他组件凭证 kube-apisever私钥 kube-apiserver证书请求 kube-apiserver证书 kube-schedule-manager私钥 kube-schedule-manager证书请求 kube-schedule-manager证书 kube-controller-manager私钥 kube-controller-manager证书请求 kube-controller-manager证书 其他组件私钥 其他组件证书请求 其他组件证书 2. 生成CA凭证
CA凭证包括一个私钥和证书私钥由CA机构保存不会对外公开证书则是对外公开的。生成证书前面要先为CA机构创建一个私钥。
1.1. 生成CA私钥
使用openssl genrsa 命令便可以生成一个私钥
openssl genrsa -out ca.key 2048生成的私钥存在ca.key文件中可以使用cat命令查看
# ls
ca.key
# cat ca.key
-----BEGIN RSA PRIVATE KEY-----
MIIEog...// 省略若干内容
-----END RSA PRIVATE KEY-----在k8s环境中应该相同的组件都是用相同的ca证书从而形成统一的签发认证效果否则可能会认证不通过 1.2. 生成CA证书
接着使用openssl req命令生成一个证书
openssl req -x509 -new -nodes -key ca.key -subj /CNca -days 10000 -out ca.crt生成的证书存在ca.crt文件中可以使用openssl x509命令查看
# openssl x509 -in ca.crt -text -noout
Certificate:Data:Version: 3 (0x2)
...到此为止CA管理员已经拥有了一个私钥和证书可以为kube-apiserver签发证书了。
2. 生成kube-apiserver凭证
要申请证书kube-apiserver管理员需要准备一个证书签发请求申请书为此kube-apiserver管理员需要先为kube-apiserver生成一个私钥。
2.1. 生成kube-apiserver私钥
为kube-apiserver生成私钥与前面为CA生成私钥的方法完全一致同样可以使用openssl genrsa完成
openssl genrsa -out server.key 2048生成的私钥存放于server.key中。
2.2. 生成kube-apiserver证书请求
接着kube-apiserver管理员需要使用kube-apiserver的私钥生成一个证书签发请求才可以提交给CA管理员进行签发。
使用openssl req -new命令可以创建一个证书请求文件
openssl req -new -key server.key -out server.csr创建证书请求文件需要提供私钥然后根据命令行提示输入相关信息生成的请求文件存放于server.csr文件中。
2.3. 生成kube-apiserver证书
当kube-apiserver管理员创建好证书请求文件后即可提次给CA管理员进行证书签发了。CA管理员在签发时 需要使用CA的私钥和证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000Signature ok这样签发完的证书就会保存在server.crt文件中可以通过命令查看证书的信息如过期时间等。
openssl x509 -in apiserver.crt -text -noout**关于证书及私钥文件常常会使用约定俗成的文件名后缀。 *.key 往往表示私钥文件 .crt certificate的缩写往往表示证书文件 .csr文件为证书签名请求文件“Certificate Signing Request”的缩写该文件内含公钥及公钥所属者信息用于向CA机构申请签名。 3. 疑问和思考
其他证书的生成过程也可以参考kube-apiserver整体流程都是相同的
4. 参考文档
暂无