前言
认证体系知识繁杂,因此需要较多的基础理论才能明白认证的一个基本逻辑。
1、非对称加密体系:这块是加密解密、认证的基本原理以及知识点。有了这些基本数学基础,才能明白具体为什么非对称加密可以做认证。相关知识点如下所示:
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
https://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
2、另外就是需要了解加密认证的基本协议规范。即使有了上面的加密解密理论知识,但是应用到实践当中,还是要有规范以及相关的约定。比如说公钥如何给到相关的机构,相关机构如何二次签发,签发的认证证书如何验证真实性等等。这块涉及到互联网的相关的知识点,用的比较多的是X.509协议,如下:
https://blog.csdn.net/blue0bird/article/details/78656536
3、有了这些协议密码之后,需要一些现成的工具来完成这些信息的生成以及证书的只做。openssl就是一个很好的工具。使用它来完成具体的证书生成操作。
4、生成后具体证书在https中的应用逻辑。其实非对称加密算法只能加解密数字,因此无法直接对较大的文本进行加密传输。所以https就是使用证书进行秘钥的传递,传递之后再用相关秘钥进行数据传输,进而保证传输信息保密。
https://www.runoob.com/w3cnote/https-ssl-intro.html
一、kubernetes需要的证书列表
kubeadm用于生成各个证书的重要代码段,他把各个证书的的生成封装成一个个的对象。然后放到我们subPhases中,上层的逻辑会挨个调用对象中的run函数。
74 func newCertSubPhases() []workflow.Phase {
75 subPhases := []workflow.Phase{}
76
77 // All subphase
78 allPhase := workflow.Phase{
79 Name: "all",
80 Short: "Generate all certificates",
81 InheritFlags: getCertPhaseFlags("all"),
82 RunAllSiblings: true,
83 }
84
85 subPhases = append(subPhases, allPhase)
86
87 // This loop assumes that GetDefaultCertList() always returns a list of
88 // certificate that is preceded by the CAs that sign them.
89 var lastCACert *certsphase.KubeadmCert
90 for _, cert := range certsphase.GetDefaultCertList() {
91 var phase workflow.Phase
92 if cert.CAName == "" {
93 phase = newCertSubPhase(cert, runCAPhase(cert))
94 lastCACert = cert
95 } else {
96 phase = newCertSubPhase(cert, runCertPhase(cert, lastCACert))
97 phase.LocalFlags = localFlags()
98 }
99 subPhases = append(subPhases, phase)
100 }
101
102 // SA creates the private/public key pair, which doesn't use x509 at all
103 saPhase := workflow.Phase{
104 Name: "sa",
105 Short: "Generate a private key for signing service account tokens along with its public key",
106 Long: saKeyLongDesc,
107 Run: runCertsSa,
108 InheritFlags: []string{options.CertificatesDir},
109 }
110
111 subPhases = append(subPhases, saPhase)
112
113 return subPhases
114 }
具体生成的相关证书逻辑。加上上面的SA。共同组成了kubernetes的所有证书。
208 func GetDefaultCertList() Certificates {
209 return Certificates{
210