聊聊cfssl
近日见闻
在最新发布的 v1.7 版本中,Karmada 新增了应用跨集群定时弹性伸缩的能力,用户可以通过 Cron 表达式设定一个时间计划,Karmada 根据设定的时间对应用进行扩缩容,既可以定时直接调整工作负载的副本实例数,又可以结合FederatedHPA 策略定时调整 FederatedHPA 伸缩范围,实现复杂场景下的工作负载伸缩。 –Karmada
隔离 (Air Gap) 可能是一种很好的安全方法,但在云环境中,它带来了许多设计挑战。Linux基金会刚刚推出了 现代安全隔离环境下的软件交付课程(LFS281)来帮助在云中创建和管理软件的IT专业人员 – 尤其是那些没有传统IT系统经验的人员 – 解决创建断开连接的价值交付系统的独特设计挑战。 免费的哦! –CNCF
Beaver Notes 使用了 Vue 和 JavaScript 构建,作为一款以隐私为主导的记事本应用,它提供了简洁而直观的用户界面。不过好不好用还未知。 –Linux中国推荐
dirpro 是一款由 python 编写的目录扫描器,操作简单,功能强大,高度自动化,感兴趣可以看下。 地址: https://github.com/coleak2021/dirpro
cfssl到底是什么
先摆出地址: https://github.com/cloudflare/cfssl
目前最新版本:1.6.4
CFSSL(CloudFlare’s SSL/TLS Toolkit)是一个由CloudFlare开发的开源工具,用于管理和操作TLS/SSL证书和密钥。它是一个命令行工具和Go语言库,用于创建、签发、管理和验证X.509数字证书。CFSSL通常用于构建和维护安全的通信通道,例如在Web服务器和客户端之间。突出一个安全通信。
以下是CFSSL的一些常用命令和功能:
gencert:生成X.509数字证书和私钥。
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
通过此命令,您可以生成自签名的根证书和私钥。
sign:使用已有的证书和私钥签发新的证书请求。
cfssl sign -ca ca.pem -ca-key ca-key.pem server-csr.json | cfssljson -bare server
此命令用于签发服务器证书。
bundle:将证书链和私钥打包成一个文件。
cfssl bundle ca.pem server.pem | cfssljson -bare bundle
这将把根证书、中间证书和服务器证书合并到一个文件中。
revoke:撤销证书。
cfssl revoke -dbpath /path/to/db -cert /path/to/cert.pem -key /path/to/key.pem
通过此命令,您可以撤销已签发的证书。
serve:启动CFSSL HTTP API服务,用于远程操作。
cfssl serve -ca ca.pem -ca-key ca-key.pem
这将启动一个HTTP API服务,允许远程客户端使用CFSSL功能。
jsoninfo:查看证书信息。
cfssl jsoninfo -cert server.pem
此命令用于查看证书的详细信息。
mkbundle:创建证书捆绑包。
cfssl mkbundle bundle.pem server.pem
这用于创建包含服务器证书和根证书的捆绑包。
k8s中怎么用cfssl
使用 CFSSL 工具生成证书是 Kubernetes 二进制安装中的关键步骤,以确保集群中的各个组件之间的通信是安全的。确保在生成证书时遵循最佳实践,以维护集群的安全性。在Kubernetes(K8s)的二进制安装中使用CFSSL生成证书时,需要执行以下详细步骤:
安装CFSSL:
首先,您需要在部署Kubernetes集群的机器上安装CFSSL。您可以从CFSSL的GitHub仓库中获取最新的二进制文件,然后将其放置在系统的可执行文件路径中,以便在命令行中访问。
wget "https://pkg.cfssl.org/R1.2/cfssl_linux-amd64" -O /usr/local/bin/cfssl
wget "https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64" -O /usr/local/bin/cfssljson
chmod +x /usr/local/bin/cfssl /usr/local/bin/cfssljson
```
2. **创建证书颁发机构(CA)证书和私钥**:
首先,创建一个CA配置文件(例如,ca-config.json),该文件指定了CA的属性,如过期时间和使用场景。然后,创建一个CA证书签发请求文件(例如,ca-csr.json),该文件包含CA的名称和其他信息。最后,使用CFSSL生成自签名的根CA证书和私钥:
```bash
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
这将生成以下文件:
- ca.pem:根CA证书
- ca-key.pem:根CA私钥
生成其它组件的证书和私钥:
对于Kubernetes集群中的每个组件(如kube-apiserver、kube-controller-manager、kube-scheduler等),需要创建相应的证书和私钥。为每个组件创建一个CSR文件(例如,server-csr.json),其中包含组件的名称和其他配置信息,然后使用根CA证书和私钥签发组件证书:
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server
这将生成以下文件:
- server.pem:组件的证书
- server-key.pem:组件的私钥
您需要为每个组件分别生成证书和私钥。
分发证书文件:
将生成的证书文件(例如ca.pem、server.pem)和私钥文件(例如ca-key.pem、server-key.pem)分发到Kubernetes集群中的各个节点。您可以使用安全的方式将这些文件传输到每个节点,以确保证书的机密性。
配置组件:
在Kubernetes组件的配置文件中,您需要指定正确的证书和私钥文件路径。例如,kube-apiserver的配置文件需要包含以下配置项:
apiServerCertSANs: - "kubernetes" - "kubernetes.default" - "kubernetes.default.svc" - "kubernetes.default.svc.cluster" - "kubernetes.default.svc.cluster.local" - "127.0.0.1" - "<master-node-IP>" apiServerExtraArgs: tls-cert-file: "/etc/kubernetes/pki/apiserver.pem" tls-private-key-file: "/etc/kubernetes/pki/apiserver-key.pem"
确保每个组件都使用其对应的证书和私钥文件。
启动Kubernetes组件:
启动Kubernetes集群中的各个组件,它们现在应该能够使用证书进行安全通信。确保在启动每个组件之前验证其证书和私钥路径是否正确配置。
通过以上介绍,应该对cfssl有个大致了解了,快去实践吧!