zoukankan      html  css  js  c++  java
  • 使用cfssl生成自签证书

    安装ssl

    wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
    wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
    wget 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/bin/cfssl
    mv cfssljson_linux-amd64 /usr/bin/cfssljson
    mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo
    cfssl version

    证书类型
    client certificate: 用于服务端认证客户端,例如etcdctl、etcd proxy、fleetctl、docker客户端
    server certificate: 服务端使用,客户端以此验证服务端身份,例如docker服务端、kube-apiserver
    peer certificate: 双向证书,用于etcd集群成员间通信

    初始化json文件
    生成json模板文件

    cfssl print-defaults config > ca-config.json
    cfssl print-defaults csr > ca-csr.json

    自签CA
    编辑 ca-config.json

    profiles:指定了不同角色的配置信息
    服务端使用server auth(TLS Web Server Authentication X509 V3 extension),客户端使用client auth(TLS Web Server Authentication X509 V3 extension)
    expiry:指定了证书的过期时间为87600小时(即10年)

    {
    "signing": {
    "default": {
    "expiry": "87600h"
    },
    "profiles": {
    "client": {
    "expiry": "87600h",
    "usages": [
    "signing",
    "key encipherment",
    "client auth"
    ]
    },
    "server": {
    "expiry": "87600h",
    "usages": [
    "signing",
    "key encipherment",
    "server auth"
    ]
    },
    "peer": {
    "expiry": "87600h",
    "usages": [
    "signing",
    "key encipherment",
    "server auth",
    "client auth"
    ]
    }
    }
    }
    }

    自定义ca-csr.json

    CN即common name,hosts可以指定多个(泛)域名以及多个IP地址
    key:指定了加密算法,一般使用rsa(size:2048)

    {
    "CN": "example.net",
    "hosts": [
    "example.net",
    "www.example.net",
    "127.0.0.1"
    ],
    "key": {
    "algo": "rsa",
    "size": 2048
    },
    "names": [
    {
    "C": "US",
    "L": "CA",
    "ST": "San Francisco"
    }
    ]
    }

    生成CA证书和私钥

    cfssl gencert -initca ca-csr.json | cfssljson -bare ca 

    生成ca.pem、ca.csr、ca-key.pem(CA私钥,需妥善保管)

    生成服务器和客户端证书
    同样,首先生成默认配置文件:

    cfssl print-defaults csr > server.json

    修改如下部分:

    "CN": "test.coreos.com",
    "hosts": [
    "server.coreos.org",
    "*.coreos.org"
    ],

    cfssl支持SAN(Subject Alternative Name),它是X.509中定义的一个扩展,使用了SAN字段的SSL证书,可以扩展此证书支持的域名,即一个证书可以支持多个不同域名的解析。
    然后使用刚才生成的CA来给服务器签署证书,运行如下命令来生成服务端证书:

    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=json/ca-config.json -profile=server json/server.json | cfssljson -bare server

    -profile指定了使用ca-config.json中的profile
    最后的server给定了生成的文件名,将得到如下三个文件:server.csr、server-key.pem和server.pem
    类似的,可以生成客户端证书,配置文件的hosts字段指定为空即可

    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=json/ca-config.json -profile=client json/client.json | cfssljson -bare client

    参考:https://blog.csdn.net/sujosu/article/details/101520260

  • 相关阅读:
    (二)springmvc+mybatis+dubbo+zookeeper分布式架构 整合
    (一)springmvc+mybatis+dubbo+zookeeper分布式架构 整合
    微服务架构 SpringCloud(四)Ribbon
    微服务架构 SpringCloud(三)注册中心集群篇
    微服务架构 SpringCloud(二)Eureka(服务注册和服务发现基础篇)
    微服务架构 SpringCloud(一)组件和概念介绍
    企业分布式微服务云SpringCloud SpringBoot mybatis (十四)服务注册(consul)
    20 TextView显示阴影
    19 shape
    18 手动发广播扫描sd卡
  • 原文地址:https://www.cnblogs.com/Wang-Hongwei/p/14062622.html
Copyright © 2011-2022 走看看