【博客539】使用openssl手动为k8s集群签发证书
创始人
2024-02-02 13:38:26

使用openssl手动为k8s集群签发证书

创建ca私钥和ca证书

1、生成ca私钥:生成一个 2048 位的 ca.key 文件

openssl genrsa -out ca.key 2048

2、基于ca私钥,生成根(root)证书:在 ca.key 文件的基础上,生成 ca.crt 文件

openssl req -x509 -new -nodes -key ca.key -subj “/CN=${MASTER_IP}” -days 10000 -out ca.crt

生成应用的私钥和csr

1、生成应用私钥:生成一个 2048 位的 server.key 文件:

openssl genrsa -out server.key 2048

2、基于应用私钥,创建一个用于生成证书签名请求(CSR)的配置文件。

openssl req -new -key server.key -out server.csr -config csr.conf

保存文件(例如:csr.conf)前,记得用真实值替换掉尖括号中的值(例如:)。 注意:MASTER_CLUSTER_IP 就像前一小节所述,它的值是 API 服务器的服务集群 IP。 下面的例子假定你的默认 DNS 域名为 cluster.local。

csr.conf example:

[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn[ dn ]
C = 
ST = 
L = 
O = 
OU = 
CN = [ req_ext ]
subjectAltName = @alt_names[ alt_names ]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster
DNS.5 = kubernetes.default.svc.cluster.local
IP.1 = 
IP.2 = [ v3_ext ]
authorityKeyIdentifier=keyid,issuer:always
basicConstraints=CA:FALSE
keyUsage=keyEncipherment,dataEncipherment
extendedKeyUsage=serverAuth,clientAuth
subjectAltName=@alt_names

使用ca私钥和ca证书为应用的csr签发应用的证书

基于 ca.key、ca.crt 和 server.csr 等三个文件生成服务端证书:

openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key
-CAcreateserial -out server.crt -days 10000
-extensions v3_ext -extfile csr.conf -sha256

查看结果

查看证书签名请求:

openssl req -noout -text -in ./server.csr

查看证书:

openssl x509 -noout -text -in ./server.crt

使用

此时需要与apiserver通信的组件可以使用server.crt来验证自己的身份

各类文件格式

私钥文件通常以 .key 结尾,证书文件通常以 .crt 结尾,证书签名请求文件通常以 .csr 结尾。
不论什么后缀的文件,其实都是文本格式的文件。

证书文件的开头和结尾是这样子的:

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

私钥文件的开头和结尾是这样的:

-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----

证书签名请求文件的开头和结尾是这样的:

-----BEGIN CERTIFICATE REQUEST-----
...
-----END CERTIFICATE REQUEST-----

key,csr,crt文件的作用

key:私钥,openssl格式,通常是rsa算法

csr(Certificate Signing Request):证书请求文件,用于申请证书,含有公钥信息。在申请的时候,必须使用自己的私钥来签署申请,还可以设定一个密钥

crt:证书文件,是签署人用自己的 key 给你签署的凭证。可以自签署

为什么生成密钥的时候只有私钥,没有公钥

RSA密钥都是一对,可这里只生成了私钥,那公钥在哪呢?
实际上公钥是根据私钥生成的,由于RSA非对称特性,私钥算出公钥很容易,公钥算出私钥就很难。

生成公钥的指令为:

openssl rsa -in ca.key -pubout -out ca.pub

生成应用的csr的时候,为什么需要使用应用的私钥

其实csr里需要的是公钥,创建证书请求时需要提供私钥,这个私钥的作用是为了提供公钥

生成ca证书的时候,为什么需要使用ca私钥

其实生成ca.crt里需要的也是公钥,创建ca证书时需要提供私钥,这个私钥的作用是为了提供公钥

签发证书的时候,为什么要同时用到ca.key和ca.crt

使用CA的证书,这用来宣示此服务器证书是谁签的;
使用CA的私钥,这用来生成摘要保证签名内容不被篡改。

创建所需条件整理

  • 1、创建证书需要:私钥(其实为了提取公钥)

  • 2、创建csr需要:私钥(其实为了提取公钥)+ csr请求配置文件

  • 3、签署csr需要:csr + ca私钥 + ca证书

流程梳理

  • 1、生成ca的私钥

  • 2、利用ca的私钥(为了提取公钥)生成ca证书,证书包含了公钥信息和ca机构信息

  • 3、生成server的私钥

  • 4、利用server的私钥(为了提取公钥)生成server的csr,csr包含了server公钥信息和server的身份信息

  • 5、使用server的csr,还有ca私钥,ca证书来生成server证书,其实签名只需要ca私钥就可以,假设ca证书是为了加入ca证书里的ca机构信息,才知道证书是谁签署的

证书自签署和认证原理

证书自签署:

我们手动生成ca私钥,然后使用ca私钥生成ca证书,证书里包含了从私钥中提取出来的公钥信息和ca机构的信息。再手动生成应用私钥,然后使用应用私钥和csr配置文件生成csr,csr里包含了应用的公钥信息和应用的身份信息。使用ca私钥和ca证书来签署csr,从而得到了server证书,里面包含了应用的公钥和身份信息,以及对应用的公钥和身份信息进行hash之后,使用ca私钥对hash的值进行签名后的一个签名值。

认证原理:

当需要验证对方身份的时候,拿到对方的证书,然后对签名值使用ca的公钥进行解密,得到加密前的内容,也就是对应用的公钥和身份信息进行hash后的hash值,此时再对证书里的应用的公钥和身份信息使用相同的hash算法,得到一个hash值,与前面那一步解密出来的hash值进行比较,如果一致,就证明身份可靠

签名和认证原理图:
在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...