Kubernetes Notes
  • README
  • 序:Kubernetes之道
  • 搭建开发环境
    • 搭建本地开发测试环境
  • 基本概念
    • Workloads
      • StatefulSet
    • 认证鉴权
      • 理解证书
      • Kubelet配置
    • 垃圾回收
    • Service
  • 基础组件
    • Scheduler
    • 自动扩缩容(HPA)
  • 容器运行时(Container Runtime)
    • CRI
    • Docker
      • 安装配置Docker
      • Docker FAQ
    • Containerd
  • 资源隔离与限制
    • 基础知识
      • Cgroup
      • Namespaces
    • CPU
    • Memory
    • 网络出/入带宽
    • GPU
    • Container
    • FAQ
  • 网络
    • 基础知识
      • Linux network interfaces
      • Iptables
      • Overlay network
    • CNI
    • Flannel
      • Flannel原理
      • host-gw
      • vxlan
      • ipip
    • Calico
    • Cilium
  • Service Mesh
    • Istio
  • 扩展Kubernetes
    • Admission controller
    • Custom resource definition(CRD)
    • Scheduler extender
    • 扩展资源维度
    • Kubectl plugin
    • Aggregator
    • Device plugin
  • 现网问题
    • Kubernetes
    • ETCD
    • Docker
  • 最佳实践
    • 各组件参数配置调优
    • 各大公司生产环境实践
    • 如何打造一个Kubernetes平台
  • 生产力小工具
    • 生成特定权限和配额的kubeconfig
  • 社区贡献
  • 学习资料
  • 附录:RTFSC
    • Informer
    • Pod deletion
Powered by GitBook
On this page
  • 1. 基本原理
  • 2. 生成证书
  • 3. 简单应用
  • 4. Kubernetes相关的证书
  • 5. 参考资料

Was this helpful?

  1. 基本概念
  2. 认证鉴权

理解证书

Previous认证鉴权NextKubelet配置

Last updated 6 years ago

Was this helpful?

1. 基本原理

A想要与B通信,A如何向B证明"我就是A",B如何向A证明"我就是B"?证书正是解决这个问题的。

在中,有一个public key和一个private key,这两个key是一一对应的,通过某一个key加密的数据只能由另一个key解出来。一般private key由用户私有保存,public key是公开的。

证书里包含了以下几项重要信息:

  • CommonName(CN):证书对应的人(或物),比如:用户A,用户B

  • Public key:CN对应的public key,如果某个用户能解开用这个public key加密的数据,那说明该用户就是该证书对应的人。

  • Signature Algorithm: 证书的签名加密算法,比如:sha256WithRSAEncryption。在后面会用到。

  • 其他,如:证书的有效时间

这样通过证书把 public key和用户一一对应起来了。但如何证明这个证书是真的?这就是的作用了。CA是一个颁发证书的权威机构,它自己也有一个public key和private key,它会用private key + 签名算法对上面的证书内容进行加密,生成一个签名,附在证书末尾。例:如果签名算法为sha256WithRSAEncryption时,会先对内容进行sha256处理,再用private key进行加密。用户怎么确认这个证书是经该CA机构认证的证书?他对证书中除签名外的内容进行sha256处理得到内容c1,然后用CA机构公开的public key对签名进行解密得到内容c2,如果c1=c2,则证明该证书确实是该CA机构认证过的。

现在通过CA机构可以将证书与用户一一对应起来了,也就是说A拿着经过CA认证过的证书就可以证明“我确实是A”。但CA认证过的用户就是真实可靠的?这就需要用户对CA机构的认可,将该CA加入信任的证书机构列表里。在chrome浏览器里会内置一些可靠的CA机构,省去了这些操作。

2. 生成证书

可以通过Openssl生成,参考(非常易懂)。

3. 简单应用

  • Go和HTTPS:

  • TLS with Go:

4. Kubernetes相关的证书

  • Kubernetes里用到的证书相关的参数

  • How Kubernetes certificate authorities work

  • 生成kubernetes证书

  • HPA证书相关参数

5. 参考资料

  • CSR(Certificate Signing Request)

  • PKI(Public key infrastructure)

  • Public key certificate

  • PEM(Privacy-enhanced Electronic Mail)

  • TLS(Transport Layer Security)

Certificates:

Provisioning a CA and Generating TLS Certificates:

Generating Kubernetes Configuration Files for Authentication:

Public-key cryptography:

CA(Certificate authority):

Wiki:

RFC5246:

The First Few Milliseconds of an HTTPS Connection:

非对称加密算法
CA(Certificate authority)
How to setup your own CA with OpenSSL
https://tonybai.com/2015/04/30/go-and-https/
https://ericchiang.github.io/post/go-tls/
https://github.com/kubernetes/kubernetes/issues/54665#issuecomment-340960398
https://github.com/kubernetes-incubator/apiserver-builder/blob/master/docs/concepts/auth.md
https://www.hnwatcher.com/r/5640735/How-Kubernetes-certificate-authorities-work
https://kubernetes.io/docs/concepts/cluster-administration/certificates/
https://github.com/kelseyhightower/kubernetes-the-hard-way/blob/master/docs/04-certificate-authority.md
https://github.com/kelseyhightower/kubernetes-the-hard-way/blob/master/docs/05-kubernetes-configuration-files.md
https://kubernetes.io/docs/tasks/access-kubernetes-api/configure-aggregation-layer/#enable-apiserver-flags
https://en.wikipedia.org/wiki/Public-key_cryptography
https://en.wikipedia.org/wiki/Certificate_authority
https://www.sslshopper.com/what-is-a-csr-certificate-signing-request.html
https://en.wikipedia.org/wiki/Certificate_signing_request
https://en.wikipedia.org/wiki/Public_key_infrastructure
https://en.wikipedia.org/wiki/Public_key_certificate
https://en.wikipedia.org/wiki/Privacy-enhanced_Electronic_Mail
https://en.wikipedia.org/wiki/Transport_Layer_Security
https://tools.ietf.org/html/rfc5246
http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html