Linux使用CFSSL自签TLS证书

CFSSL是CloudFlare开源的一款PKI/TLS工具(PKI = Publick Key Infrastructure 公钥基础设施 )。 CFSSL 包含一个命令行工具 和一个用于 签名,验证并且捆绑TLS证书的 HTTP API 服务。 使用Go语言编写。

项目地址: https://github.com/cloudflare/cfssl

下载地址: https://pkg.cfssl.org/

参考链接: https://blog.cloudflare.com/how-to-build-your-own-public-key-infrastructure/

⒈安装CFSSL

# 生成证书
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64

# 利用Json生成证书
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64

# 查看证书信息的工具
https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64

⒉修改权限

chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64

⒊移动文件

mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo

⒋验证指令

cfssl --help

5. 生成一个配置模板

cfssl print-defaults config > config.json

//默认生成的模板文件如下:

{
     "signing": {  //签名
         "default": {
             "expiry": "168h"  //默认过期时间
         },
         "profiles": {
             "www": {
                 "expiry": "8760h",
                 "usages": [
                     "signing",
                     "key encipherment",
                     "server auth"
                 ]
             },
             "client": {
                 "expiry": "8760h",
                 "usages": [
                     "signing",
                     "key encipherment",
                     "client auth"
                 ]
             }
         }
     }
 }

6. 生成证书信息文件

cfssl print-defaults csr > csr.json

# 默认生成的模板文件如下:
{
     "CN": "example.net",  //标识具体的域
     "hosts": [  //使用该证书的域名
         "example.net",
         "www.example.net"
     ],
     "key": {  //加密方式,一般RSA 2048
         "algo": "ecdsa",
         "size": 256
     },
     "names": [  //证书包含的信息,例如国家、地区等
         {
             "C": "US",
             "L": "CA",
             "ST": "San Francisco"
         }
     ]
 }

6. 示例:  生成配置模板及证书信息,如生成CA颁发机构的根证书

cat > ca-config.json < ca-csr.json <

7. 示例: CA机构给别人的证书,服务端的证书

# 别人的申请证书的信息
cat > server-csr.json << EOF
 {
     "CN":"kubernetes",
     "hosts":[
         "127.0.0.1",
         "192.168.0.211",
         "192.168.0.212",
         "192.168.0.213",
         "10.10.10.1",
         "kubernetes",
         "kubernetes.default",
         "kubernetes.default.svc",
         "kubernetes.default.svc.cluster",
         "kubernetes.default.svc.cluste.local"
     ],
     "key":{
         "algo":"rsa",
         "size":
     },
     "names":[
         {
             "C":"CN",
             "L":"Hebei",
             "ST":"Zhangjiakou",
             "O":"k8s",
             "OU":"System"
         }
     ]
 }
 EOF

# CA根据申请的信息生成证书
cfssl gencert -ca=ca.pem 
              -ca-key=ca-key.pem 
              -config=ca-config.json 
              -profile=kubernetes 
              server-csr.json | cfssljson -bare server

8. 示例:  CA给别人的信息, 集群管理员


# 申请证书的信息
cat > admin-csr.json <

9. 示例:kube-proxy申请的证书

# 申请证书的信息
cat > kube-proxy-csr.json <

你可能感兴趣的:(K8S,linux,kubernetes)