wmenjoy / awesome-knowleges

汇总有用的知识
38 stars 7 forks source link

CA 认证 #90

Open wmenjoy opened 3 years ago

wmenjoy commented 3 years ago

概念

证书认证

image

wmenjoy commented 3 years ago

cert-manager

image

参考

  1. k8s中使用cert-manager玩转证书 - 云+社区 - 腾讯云
  2. Welcome to cert-manager | cert-manager
  3. Kubernetes (8) - Automatic TLS Certificates signed by Let's Encrypt -
  4. Certificate management on Kubernetes · Banzai Cloud
  5. 手把手教你使用 cert-manager 签发免费证书_吉小白的博客-CSDN博客
  6. 使用 Cert Manager 为 Kubernetes 应用自动签发 HTTPS 证书 | Laravel China 社区
wmenjoy commented 3 years ago

TLS 相关知识

参考

  1. TLS_Network/Storage/Linux Kernel-CSDN博客
  2. Chrome下可用的的Kubernetes Dashboard证书的制作_知行合一 止于至善-CSDN博客
  3. SSL/TLS 高强度加密: 常见问题解答 - 小网民 - 博客园
wmenjoy commented 3 years ago

Kubernetes 证书

image

image image image

注意: apiserver和etcd需要使用两个独立的ca

参考

  1. Kubernetes by Parts: Certificate Management (2) - Clusterise
  2. PKI certificates and requirements | Kubernetes
  3. Install, link, and update certificates on Citrix ADC using the Citrix ingress controller - Citrix ADC ingress controller for Kubernetes
  4. Kubernetes from scratch: Certificates | by Oleg Pershin | Medium
  5. Kubernetes Authentication and Authorization with X509 client certificates | by Suresh Palemoni | Medium
  6. Kubernetes the Very Hard Way. Velocity Berlin 2019
  7. Kubernetes RBAC 101: Authentication | Cloud Native Computing Foundation
  8. kubernetes(K8S)创建自签TLS证书 - 我是一条最咸的咸鱼 - 博客园
  9. 傻傻分不清楚的kubernetes证书 - SegmentFault 思否
  10. k8s证书配置,dns,dashboard - 简书
wmenjoy commented 3 years ago

生成ca证书

  1. Generate Self Signed Certificates for Kubernetes {4 Methods}
  2. Certificates | Kubernetes
  3. docs/generate-self-signed-certificates.md at master · coreos/docs
  4. How to setup your own CA with OpenSSL
  5. openssl ca(签署和自建CA) - 骏马金龙 - 博客园
  6. /docs/man1.1.1/man1/openssl-ca.html
  7. OpenSSL生成根证书CA及签发子证书_ld11690的专栏-CSDN博客_openssl 根证书
  8. OpenSSL主配置文件openssl.cnf - 骏马金龙 - 博客园
  9. Certificate Management with kubeadm | Kubernetes
  10. Manage TLS Certificates in a Cluster | Kubernetes
wmenjoy commented 3 years ago

kubernetes 安全

  1. 11 Ways (Not) to Get Hacked | Kubernetes
wmenjoy commented 3 years ago

公钥基础

提起RSA加密算法,公钥和私钥,多数文章都要使用Bob和Alice这两位人物。他们的创造者名叫Rivest,是RSA之父。他为了在避免在描述中使用A和B,就以这两个字母开头,创建一男一女两个角色,就是我们在任何文章上都能看到的Alice和Bob了。 什么是数字证书 image Bob有两把钥匙,一把叫公钥(public key),一把叫私钥(private key)。

image

Bob的公钥可以公开供其他人使用,他只保留自己的私钥。公钥和私钥用来加解密数据,如果使用任意一把来加密数据,那么只有使用另外一把才能解密数据。

image

Susan想给Bob写信,她可以使用Bob的公钥将内容加密以后发送给Bob,Bob收到以后,使用私钥解密以便阅读内容。Bob的的其他同事即使截获了Susan发送给Bob的信件,由于没有Bob的私钥,也无法解密,从而确保数据安全。以上就是使用公钥和私钥加解密的过程演示。

多说一句,如果Bob给Susan回信,如何保证数据安全呢?他可以使用Susan的公钥加密消息后发给Susan,Susan使用自己的私钥解密后阅读。所以保护好自己的私钥是多么重要的事情啊。

现在Bob决定给Pat写一份信,信件的内容不用加密,但是要保证Pat收到信件后,能够确认信件的确是Bob发出的,而不是别人冒充Bob发给Pat的,应该如果做呢? image

Bob将信件通过hash软件计算一下,得到一串消息摘要(有的文章也称之为“hash值”)。这一过程能够保证2点:1、过程不可逆。即不能通过消息摘计算出信件的内容。2、消息摘要不会重复。即如果信件有任何改动,再次hash计算出的消息摘要一定不会和改动前的消息摘要一致。

image

image

然后,Bob使用自己的私钥,将消息摘要加密。加密后的结果,我们称之为“数字签名”。现在,Bob就可以将信件连同数字签名一起发给Pat。

image Pat收到信件以后,会做2件事:1、使用Bob的公钥将数字签名解密,如果顺利解密,说明的确是Bob签发的数字签名,不是别人签发的,因为Bob的私钥没有公开。2、Pat使用hash软件对信件再次进行hash计算,和解密数字签名得到的消息摘要对比,如果一致,说明信件没有篡改,确实是Bob发出的。这就是数字签名的过程。它能够确保签名人发出的消息不被篡改,也能证明的确是签名人发出的消息。

ok,一切看上去是那么的完美,使用公钥私钥,即能加解密消息,又可以数字签名。说了那么多,还没有提到文章的主题----数字证书(不要和数字签名搞混了)。

先来做一道CISP的试题:

那类人对单位的信息安全威胁最大:a、高层领导 b、信息主管 c、安全管理员 d、心怀不满的员工

三长一短选最短,三短一长选最长,so答案就是d,也是我们下面引入的主角,Doug,our disgruntled employee。

Doug要欺骗Pat,冒充Bob给Pat写信,他应该怎么做的?既然Bob的公钥是公开的,Doug可以冒充Bob,将他自己的公钥发给Pat,让Pat误认为收到的公钥就是Bob的,然后就可以冒充Bob给Pat发消息了(这里我们只谈理论,不谈具体实现方式)。所以问题的核心就是,如何确保公钥不被冒充?

使用数字证书可以确保公钥不被冒充。数字证书是经过权威机构(CA)认证的公钥,通过查看数字证书,可以知道该证书是由那家权威机构签发的,证书使用人的信息,使用人的公钥。它有以下特点:

1、由专门的机构签发的数字证书才安全有效。

2、签发数字证书是收费的。

3、不会被冒充,安全可信。

4、数字证书有使用期限,过了使用期限,证书变为不可用。CA也可以在试用期内,对证书进行作废操作。

image 5、CA的公钥已经集成到操作系统中了。如上图。

生成数字证书的流程的如下:

1、持有人将公钥以及身份信息发送给权威机构。

2、权威机构负责对持有人的身份进行验证,确保公钥和持有人的信息准确无误。

3、权威机构使用自己私钥对持有人公钥进行数字签名,生成数字证书。

4、为了确保证书不被篡改,权威机构对数字证书进行hash计算(指纹算法),生成摘要(指纹),使用自己的私钥对摘要进行数字签名,放到数字证书中。

5、对持有人收费。

--- Bob有了数字证书后,给Pat写信时额外地附上数字证书,如下: image

Pat收信后,用CA的公钥解密数字证书中的数字签名(CA公钥存在根证书中,根证书是绝对信任的),得到数字签名的原文,再计算数字证书的hash值,对比得到的hash值和得到的数字签名原文,即可验证该数字证书是否可信任,若验证通过了,说明该数字证书上的信息是可信的,进而得到Bob的真实公钥,用Bob的真实公钥来验证Bog的数字签名,若验证通过,则可以确认该信件是Bob发出的了。 image

参考

  1. 数字签名是什么? - 阮一峰的网络日志
  2. 数字证书原理,公钥私钥加密原理_晓阳 的专栏-CSDN博客
  3. 公钥、密钥和数字证书_不甘平凡的小鸟的专栏-CSDN博客
wmenjoy commented 3 years ago

Rancher 使用自定义证书

参考

  1. Rancher Docs: Custom Certificates
  2. rke up --custom-certs not working · Issue #2168 · rancher/rke
  3. Certificates manual rotation Rancher Kubernetes cluster | important reminder - Code World
  4. 自定义证书 | Rancher文档
  5. 2 - 安装 - 1 - 自定义证书 - 《Rancher RKE 使用手册(201906)》 - 书栈网 · BookStack
wmenjoy commented 3 years ago

问题汇总

参考

  1. Missing X509 extensions with an openssl-generated certificate - Information Security Stack Exchange
  2. ETCD出现:certificate specifies an incompatible key usage 解决方案_追梦者的部落格-CSDN博客
  3. ssl - Subject Alternative Name not present in certificate - Stack Overflow
  4. authentication handshake failed: x509: cannot validate certificate for 127.0.0.1 because it doesn\'t contain any IP SANs" · Issue #3700 · lightningnetwork/lnd
  5. Unable to connect to the server: x509: certificate is valid for问题解决_DANTE54的博客-CSDN博客
  6. Generate ssl certificates with Subject Alt Names
  7. x509: cannot validate certificate for x because it doesn't contain any IP SANs seen when using custom certificates · Issue #2216 · rancher/rke
  8. x509: cannot validate certificate for 10.30.0.163 because it doesn't contain any IP SANs_min19900718的博客-CSDN博客
  9. docs/generate-self-signed-certificates.md at master · coreos/docs