您当前的位置: 首页 >  ssl

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

SSL基础:23:生成Kubernetes集群证书(OpenSSL方式)

发布时间:2019-12-15 14:33:46 ,浏览量:0

在这里插入图片描述 使用OpenSSL提供的命令则可非常容易地生成kubernetes集群创建所需要的证书,参照官方给的示例方法,再结合前面的文章对于OpenSSL的使用介绍,会发现openssl使用起来还是非常方便和简单的。

事前准备
[root@liumiaocn k8s]# openssl version
OpenSSL 1.1.1d  10 Sep 2019
[root@liumiaocn k8s]#
步骤1: 生成ca的私钥

执行命令:openssl genrsa -out ca.key 2048

[root@liumiaocn k8s]# ls
[root@liumiaocn k8s]# openssl genrsa -out ca.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
........................................+++++
...............................................................................+++++
e is 65537 (0x010001)
[root@liumiaocn k8s]# ls
ca.key
[root@liumiaocn k8s]# 
[root@liumiaocn k8s]# cat ca.key 
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAryNEmfVyzO/C8husAn/crU7CekP2WpepK2bVfhJZbpBtNS/p
plQcgj8WZBDqb9b2ryLmFSaJ1GQ44ThcoQLTHV4EVcJGACcaUzZy/pzEvgNEoAzi
t9Ny/7i4AO2LoPbFgU35d3ckwAEx7DTPKdzgX7UeSG0FZ8FSWaqTSBk+K6IvW+bS
ZerqHOMuzumE/5Babll95CFOc7pBQklpkOEuwrX/1k2tgkVqzCC2z+RWXmKuPOeg
UepG/bBxQUhd7zbTSCvITE3dDoqb1DP9xbI0+q9jxiZyK4Z5hJZs9C4ma+8U4wC7
2Zo7m1w2M2WxgJxweNr7K5BEtM3MXVhT0bwVpQIDAQABAoIBAQCM+BdM0TrxZ/+D
PvDKJj7rJJz3KuMNckuRirlHO9/OVeQBTqqD3eoAkGUmcFMzaFSxDaci2R1R3sXF
yscMNqjVV4qnuLL9hnvzBL204VyfESRYq2aFzmYfHYDGBm5ARsEc3jVxim4DOjMD
zFH/gTD8+F0CsPYL2Ji/YcQg4WigVxsBkoaTB45OCBEgkUsuwu+uvyLkx/62w5iU
1J9kxWOX/5q/iqgmQOLiaagmPVRCg0jxwbSAnrl64WRFBueOJhT3NRewzcoA/klB
4ho2om2RTXtgb/70E0ELjXLTEc+PxcIhogIpH95Kwu6fYLzezkAw4Y2PgkW2Pu16
HVygtMnBAoGBAN4tMzqIe3Q2qFdRJ3LIaVpV9E9ZcF5PH5wttWzv2GA1knCpUSFE
lLlzyTotqpYxwyK9T0Jafd9rxhk7pW4SpXfDt9zBRsm99gh7zdOaSAzJIoHbk4kb
KYgs01nYOh+iG+EQ3nfG2J5t1Q0mLoyTeHS3m/V2Ggjjid9PLaIX33IVAoGBAMnM
1+IWuC0VDfXm3yz9NkGKFQ0OeX/92Lt4UhAQN6kiBdTDE+leyZQFmbt2AzXa7iMI
ZJbaBd//sgsoic9qDHotWx8vKcBAh7bENhmqdTxDEIQ5kuiUCcbIdefLM4ZZ6J+9
XMUKcWgXwaHUz+3/YKQUg9cjplcbrszDar7HvUlRAoGAEroUm1ZtsXn57oI0pQQn
fSnJkfaj9g8NRwjDRg9hWZqqYTykTf2N26PazkCTJF3FaOQ0Dg+6lF5tMCtK4mBH
+jRRBxZzdQXB+y0USEW01P8PHYr4gJH9ijDdD7GeFJSBbRMS7V2hXJk9YAJb4hV8
Dbp8NtBhmWY0dNIjson4l5ECgYAckyT+nrj1qUWQzGBNvo0wOp1AfAw4U3mdEiyM
mb9H88lflz/6i7F/hEuAf/V0asvNqiKUOcsbLNnJOrRI6ntZ0ZJVmBgRYRHWj3IZ
sElpfxWXo49p34yC2V/Ysq1ZGOIXvHimbhQg6TxB7iCDUuYcVctVa3biXskhtYon
+aCUAQKBgGnJ84m37oGuljoZuKSHDQAD16Bgtx9RkAprfUdI0QYIs48lnrOkM++p
EtrAtTr1Bxnfh9XUpBdsMuTDM6SkwlBnaxqY6m0xhX+aQ20f26dgYQbjUUfhYS/b
SLf3Ijv4mO796fhpx3jTthKZj3hniifeu9Qenx/PRnUNtuGVUjWs
-----END RSA PRIVATE KEY-----
[root@liumiaocn k8s]#

提取私钥中的公钥内容

[root@liumiaocn k8s]# openssl rsa -in ca.key -pubout
writing RSA key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAryNEmfVyzO/C8husAn/c
rU7CekP2WpepK2bVfhJZbpBtNS/pplQcgj8WZBDqb9b2ryLmFSaJ1GQ44ThcoQLT
HV4EVcJGACcaUzZy/pzEvgNEoAzit9Ny/7i4AO2LoPbFgU35d3ckwAEx7DTPKdzg
X7UeSG0FZ8FSWaqTSBk+K6IvW+bSZerqHOMuzumE/5Babll95CFOc7pBQklpkOEu
wrX/1k2tgkVqzCC2z+RWXmKuPOegUepG/bBxQUhd7zbTSCvITE3dDoqb1DP9xbI0
+q9jxiZyK4Z5hJZs9C4ma+8U4wC72Zo7m1w2M2WxgJxweNr7K5BEtM3MXVhT0bwV
pQIDAQAB
-----END PUBLIC KEY-----
[root@liumiaocn k8s]#
步骤2: 生成ca证书

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

[root@liumiaocn k8s]# MASTER_IP=192.168.163.121
[root@liumiaocn k8s]# openssl req -x509 -new -nodes -key ca.key -subj "/CN=${MASTER_IP}" -days 10000 -out ca.crt
[root@liumiaocn k8s]# ls
ca.crt  ca.key
[root@liumiaocn k8s]#

可以看到这实际上就是一个自签名的证书

[root@liumiaocn k8s]# openssl x509 -in ca.crt -noout -issuer -subject -dates
issuer=CN = 192.168.163.121
subject=CN = 192.168.163.121
notBefore=Dec 15 06:14:00 2019 GMT
notAfter=May  2 06:14:00 2047 GMT
[root@liumiaocn k8s]#
步骤3: 生成server端私钥文件

执行命令:openssl genrsa -out server.key 2048

[root@liumiaocn k8s]# ls
ca.crt  ca.key
[root@liumiaocn k8s]# openssl genrsa -out server.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
..............+++++
..............................................................+++++
e is 65537 (0x010001)
[root@liumiaocn k8s]# ls
ca.crt  ca.key  server.key
[root@liumiaocn k8s]# file server.key 
server.key: PEM RSA private key
[root@liumiaocn k8s]#
步骤4: 设定证书签名请求CSR文件的配置文件
[root@liumiaocn k8s]# cat csr.conf 
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C = CN
ST = LiaoNing 
L = DaLian
O = kubernetes
OU = kubernetes
CN = 192.168.163.121

[ 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 = 192.168.163.121
IP.2 = 10.254.0.1

[ v3_ext ]
authorityKeyIdentifier=keyid,issuer:always
basicConstraints=CA:FALSE
keyUsage=keyEncipherment,dataEncipherment
extendedKeyUsage=serverAuth,clientAuth
subjectAltName=@alt_names
[root@liumiaocn k8s]#
步骤5: 生成server端证书签名请求CSR文件

执行命令:openssl req -new -key server.key -out server.csr -config csr.conf

[root@liumiaocn k8s]# ls
ca.crt  ca.key  csr.conf  server.key
[root@liumiaocn k8s]# openssl req -new -key server.key -out server.csr -config csr.conf
[root@liumiaocn k8s]# ls
ca.crt  ca.key  csr.conf  server.csr  server.key
[root@liumiaocn k8s]# file server.csr 
server.csr: PEM certificate request
[root@liumiaocn k8s]#
步骤6: 生成server端证书

执行命令:openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 -extensions v3_ext -extfile csr.conf

[root@liumiaocn k8s]# ls
ca.crt  ca.key  csr.conf  server.csr  server.key
[root@liumiaocn k8s]# openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 -extensions v3_ext -extfile csr.conf
Signature ok
subject=C = CN, ST = LiaoNing, L = DaLian, O = kubernetes, OU = kubernetes, CN = 192.168.163.121
Getting CA Private Key
[root@liumiaocn k8s]# ls
ca.crt  ca.key  ca.srl  csr.conf  server.crt  server.csr  server.key
[root@liumiaocn k8s]# file server.crt 
server.crt: PEM certificate
[root@liumiaocn k8s]#
步骤7: 确认server证书信息

执行命令:openssl x509 -noout -text -in ./server.crt

[root@liumiaocn k8s]# openssl x509  -noout -text -in ./server.crt
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            54:e9:0e:67:55:c5:fb:b2:30:5d:9e:36:33:72:42:a2:74:32:ee:ac
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = 192.168.163.121
        Validity
            Not Before: Dec 15 06:27:11 2019 GMT
            Not After : May  2 06:27:11 2047 GMT
        Subject: C = CN, ST = LiaoNing, L = DaLian, O = kubernetes, OU = kubernetes, CN = 192.168.163.121
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:b0:90:e9:74:1b:2f:94:8e:7d:d4:eb:12:ba:e2:
                    54:97:eb:bc:4e:05:00:20:6e:34:5b:1c:fb:bd:6e:
                    76:95:3e:e1:bf:c8:78:c6:c8:69:30:3e:40:a4:30:
                    f3:77:cc:ea:bc:0d:b6:2f:44:4f:a2:31:10:df:1a:
                    15:fe:78:79:76:96:1e:c5:21:cd:c4:95:10:d1:fd:
                    95:ed:87:26:5f:1d:e2:2f:d0:de:8f:65:8d:d2:d8:
                    e6:0f:f7:d1:e9:4a:1c:d6:e4:d0:bf:bc:33:ec:ea:
                    43:9c:08:2f:9a:9b:1a:9b:9f:de:80:69:a8:f2:cb:
                    21:eb:cc:bf:5f:bc:0d:64:da:a3:96:fd:2a:4e:8e:
                    60:59:c8:8c:f2:8b:ab:7c:28:1b:74:67:a6:0f:2c:
                    b1:4c:2e:8c:27:ce:8b:94:fa:66:3b:c6:9a:a7:1c:
                    1f:31:ae:47:24:70:06:43:d4:d1:4b:85:e9:58:fe:
                    b9:d7:6a:c2:bf:2b:53:53:ca:bb:47:97:b2:12:5e:
                    6a:e7:61:77:aa:e5:a5:db:fd:88:99:fa:d4:07:52:
                    55:42:de:f0:96:1e:da:51:f6:06:6c:a1:f4:d8:e6:
                    b1:fb:a3:f2:2c:d7:49:d1:45:c5:19:0e:81:4f:a9:
                    2f:78:60:0d:3d:e7:18:03:df:67:83:97:a2:38:48:
                    94:75
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Authority Key Identifier: 
                keyid:AF:FE:C3:A4:D6:FD:F0:4D:44:D3:B2:A0:AB:BA:60:AE:B9:DC:F6:58
                DirName:/CN=192.168.163.121
                serial:08:79:A5:DC:0A:28:3E:9A:5D:E8:97:E5:D6:D1:AE:52:DD:82:DD:DB

            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Key Usage: 
                Key Encipherment, Data Encipherment
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Subject Alternative Name: 
                DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster, DNS:kubernetes.default.svc.cluster.local, IP Address:192.168.163.121, IP Address:10.254.0.1
    Signature Algorithm: sha256WithRSAEncryption
         57:77:b3:9d:00:e5:d5:10:45:20:ef:8b:7d:dc:9a:26:e2:29:
         c9:be:fd:99:84:99:cd:df:58:36:b8:4a:98:92:46:49:7f:10:
         99:a3:9b:49:6d:7f:9d:28:2e:c3:8b:12:2b:0c:50:f2:60:1a:
         4b:d6:80:73:ec:bd:d7:82:fe:c4:b1:17:4b:2c:00:c3:ee:f1:
         8a:61:fb:c8:f6:77:11:f7:2f:37:8e:fc:35:1c:2a:53:1f:2b:
         2d:8a:71:d9:6d:fb:23:23:c1:8d:c0:fe:52:d6:d2:03:b8:46:
         58:48:fe:98:75:0f:f7:b3:35:90:c7:5a:39:83:6c:46:d3:4e:
         cd:4c:f9:5f:93:27:ae:a6:a4:68:e1:4e:cc:6f:b4:08:45:23:
         1e:f5:bb:71:5a:ae:59:50:56:e0:80:1b:4b:35:5a:71:ac:de:
         c5:98:f3:51:1f:ab:ea:74:f7:e4:64:78:7a:ea:67:e1:bd:00:
         b4:e9:6c:15:d7:b1:3f:6e:b4:e7:a3:bd:39:92:b3:da:0c:7f:
         24:ba:28:9d:dd:10:11:df:bd:4d:9b:0e:1e:93:bd:8e:9a:7e:
         98:c8:e4:b5:21:78:74:f9:a4:c4:88:e5:aa:0c:e9:a8:97:b4:
         53:5d:da:f0:66:d3:c0:b6:bc:bb:92:f5:35:c5:20:d0:bb:cf:
         61:7a:19:7a
[root@liumiaocn k8s]#

可以看到此证书的签发者正是ca

[root@liumiaocn k8s]# openssl x509  -noout -in ./server.crt -issuer -subject -dates 
issuer=CN = 192.168.163.121
subject=C = CN, ST = LiaoNing, L = DaLian, O = kubernetes, OU = kubernetes, CN = 192.168.163.121
notBefore=Dec 15 06:27:11 2019 GMT
notAfter=May  2 06:27:11 2047 GMT
[root@liumiaocn k8s]#

另外,server端中证书中的公钥信息也和server.key私钥是符合的

[root@liumiaocn k8s]# openssl x509  -noout -in ./server.crt -pubkey
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsJDpdBsvlI591OsSuuJU
l+u8TgUAIG40Wxz7vW52lT7hv8h4xshpMD5ApDDzd8zqvA22L0RPojEQ3xoV/nh5
dpYexSHNxJUQ0f2V7YcmXx3iL9Dej2WN0tjmD/fR6Uoc1uTQv7wz7OpDnAgvmpsa
m5/egGmo8ssh68y/X7wNZNqjlv0qTo5gWciM8ourfCgbdGemDyyxTC6MJ86LlPpm
O8aapxwfMa5HJHAGQ9TRS4XpWP6512rCvytTU8q7R5eyEl5q52F3quWl2/2ImfrU
B1JVQt7wlh7aUfYGbKH02Oax+6PyLNdJ0UXFGQ6BT6kveGANPecYA99ng5eiOEiU
dQIDAQAB
-----END PUBLIC KEY-----
[root@liumiaocn k8s]# 
[root@liumiaocn k8s]# openssl rsa -in server.key -pubout
writing RSA key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsJDpdBsvlI591OsSuuJU
l+u8TgUAIG40Wxz7vW52lT7hv8h4xshpMD5ApDDzd8zqvA22L0RPojEQ3xoV/nh5
dpYexSHNxJUQ0f2V7YcmXx3iL9Dej2WN0tjmD/fR6Uoc1uTQv7wz7OpDnAgvmpsa
m5/egGmo8ssh68y/X7wNZNqjlv0qTo5gWciM8ourfCgbdGemDyyxTC6MJ86LlPpm
O8aapxwfMa5HJHAGQ9TRS4XpWP6512rCvytTU8q7R5eyEl5q52F3quWl2/2ImfrU
B1JVQt7wlh7aUfYGbKH02Oax+6PyLNdJ0UXFGQ6BT6kveGANPecYA99ng5eiOEiU
dQIDAQAB
-----END PUBLIC KEY-----
[root@liumiaocn k8s]#
参考内容

https://kubernetes.io/docs/concepts/cluster-administration/certificates/

关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

1.1019s