• 将CFSSL与Lemur证书管理器集成


    将CFSSL与Lemur证书管理器集成

    https://www.youcl.com/info/3548

      在上一篇关于Lemur证书管理器的文章中 ,我们没有使用任何第三方根证书颁发机构(CA)作为客户端证书。 因此,在本教程中,将使用CFSSL(Cloudflare的SSL)设置PKI并与Lemur项目集成。 目前,没有文档可以帮助用户将CFSSL与Lemur设置集成。

    注意:由于我们使用CFSSL作为第三方根权限,因此首先我们必须在单独的机器上设置它(但是我们在同一个Lemur盒子上设置它)然后更改狐猴conf文件以使用CFSSL签署证书。

    安装CFSSL

    CloudFlare SSL使用“Go”编程语言实现,因此机器上需要安装“go”软件包。 以下命令将在计算机上安装所需的程序包。

    1.安装Go

    Go包将从源代码安装。

       
     wget https://dl.google.com/go/go1.10.1.linux-amd64.tar.gz 
    

    提取下载的存档并将其安装到系统上的所需位置。 我们将它安装在/ usr / local目录下。 您也可以将其放在系统上的所需位置。

      
       
     tar -xzvf go1.10.1.linux-amd64.tar.gz  
      mv go /usr/local

    安装Go包之后,还需要为Go二进制文件设置环境变量。 (您可以将其添加到用户配置文件中,以使其永久设置)。 通常你需要将3个环境变量设置为 GOROOT ,   GOPATH   和   路径

    GOROOT   是您的系统上安装Go包的位置。

     export GOROOT=/usr/local/go

    GOPATH   是您的工作目录的位置。

    export GOPATH=$HOME/go

    现在设置   路径   变量访问进入二进制系统范围。

    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

    2. Test Go命令

    现在在终端中输入“go”命令。 它将显示输出,如下面的屏幕截图。

    go
    

    3.安装CFSSL

    我们必须在这个Ubuntu平台上安装CFSSL。 当正确设置GO所需的环境变量时,CFSSL安装过程将很容易。

    一个。 以下命令将下载CFSSL实用程序并在$ GOPATH / bin / path中构建它。

    go get -u github.com/cloudflare/cfssl/cmd/cfssl

    湾 以下命令将安装CFSSL包的json插件。它是必需的,因为CFSSL处理JSON请求。

     go get -u github.com/cloudflare/cfssl/cmd/cfssljson

    C。 使用下面给出的命令简单地安装CFSSL的所有程序。 此命令将下载,构建和安装所有实用程序(包括cfssl,cfssljson和mkbundle等)到$ GOPATH / bin /目录中。

    go get -u github.com/cloudflare/cfssl/cmd/...

    如下图所示,在终端中运行“cfssl”命令,它将显示CFSSL PKI支持的所有操作。

    CFSSL的PKI设置

    现在,cfssl应用程序将用于为Lemur项目设置PKI。 配置文件“CSR_configuration”和“signing_configuration”在CFSSL设置中很重要。 “CSR”配置文件包含您要创建的密钥对的配置,以及名称的“签名”配置,设置配置规则。

    创建ROOT CA.

    对于根CA,请检查以下CSR配置文件(我们将其称为csr_ROOT_CA.json):

    • csr_ROOT_CA.json
     {
     "CN": "MY-ROOT-CA",
     "key": {
        "algo": "ecdsa",
        "size": 256
     },
     "names": [
     {
        "C": "UK",
        "L": "London",
        "O": "My Organisation",
        "OU": "My Organisational Unit Inside My Organisation"
     }
     ],
     "ca": {
        "expiry": "262800h"
     }
    }

    下面给出不同领域的简要说明。

    • 配置文件遵循X.509命名方案,因此需要以下字段:
      • CN(通用名称) - 实体的名称。 在根CA情况下,它是根CA名称;
      • C(国家)
      • L(位置)
      • O(组织)
      • OU(组织单位)
    • 现在,许多特定字段特定于CFSSL:
      • KEY - 定义键特征:
        • Algo - 指定算法。 对于RSA或ECDSA算法,可以分别为'rsa'或'ecdsa'。 现在,如果传统设备不相关,则始终建议使用ECDSA,但这仅适用于少于两年或三年的设备。 否则应使用RSA。
        • size - 指定密钥大小。 ecdsa键应使用256。 对于RSA密钥,建议值为2048或4096。
      • ca - 定义CA特征,在本例中定义密钥有效性,以小时为单位,以小时为单位。 在这种情况下,它是30年(24x356x30),因为只要你预见到根密钥的安全性,root权限就会持续。

    现在,运行以下命令以实际为Lemur创建根CA.

    cfssl gencert -initca csr_ROOT_CA.json | cfssljson -bare root_ca

    以上命令将在计算机上创建以下文件。

    • root_ca.csr - 根ca证书签名请求,对根ca没有意义,因此永远不会被使用。 由于根CA是自签名的。
    • root_ca.pem - 根CA证书。 这是您和尽可能分发的文件。
    • root_ca.key - 这是根CA Key。 保持这个文件的安全和安全,就像你的生活依赖它一样。 对于公共Root CA,这实际上是事实。

    根CA是自签名的,因此请继续下一步以生成中间CA.

    中级CA.

    中间CA的生成不是强制性的,但对应于最佳实践。 拥有中间CA的最终目标是在安全性方面具有中间步骤。 通常。 根CA密钥保留在脱机计算机中,仅在需要签署中间CA证书时使用。

    配置文件“csr_INTERMEDIATE_CA.json”是创建中间CA所必需的。

    • csr_INTERMEDIATE_CA.json - 中间CA的证书签名请求
    {
     "CN": "My-Intermediate-CA",
     "key": {
        "algo": "ecdsa",
        "size": 256
     },
     "names": [
     {
        "C": "UK",
        "L": "London",
        "O": "My Organisation",
        "OU": "My Organisational Unit Inside My Organisation"
     }
     ],
     "ca": {
        "expiry": "42720h"
     }
    }

    “root_to_intermediate_ca.json”文件包含根CA签名配置。

    { 
    "signing": { "default": { "usages": ["digital signature","cert sign","crl sign","signing"], "expiry": "262800h", "ca_constraint": {"is_ca": true, "max_path_len":0, "max_path_len_zero": true} } } }

    此文件包含证书的最相关参数。

    • 用法 - 允许签署的证书执行哪些用法。 CFSSL支持的选项如下:
      • “电子签名”,
      • “证书签字”,
      • “crl sign”,
      • “签约”
      • 等等
    • is_ca - 此字段仅适用于生成跨媒体CA证书,并允许生成的证书签署其他证书。 如果将此字段保留在终端设备证书上,则大多数常见浏览器和操作系统都会拒绝该字段。

    以下命令将针对上述配置创建中间CA.

    cfssl gencert -initca csr_INTERMEDIATE_CA.json | cfssljson -bare intermediate_ca

    以上命令将创建中级CA的以下文件。

    • intermediate_ca.csr - 中级CA证书签名请求。
    • intermediate_ca.pem - 中级CA证书,未经任何人签名,因此无用。
    • intermediate_ca.key - 这是中级CA密钥。 保持此文件的安全性和安全性。

    以下命令显示根CA对中间CA证书的签名。

    cfssl sign -ca root_ca.pem -ca-key root_ca-key.pem -config root_to_intermediate_ca.json intermediate_ca.csr | cfssljson -bare intermediate_ca

    上面的命令将签署intermediate_ca.pem文件。 现在完成了根和中间CA的设置。 保持Root CA Keys和配置文件的安全性非常重要。 下一步是为客户端设备或客户创建证书。 在这里,我们将CFSSL设置与Lemur项目集成,并生成客户端证书。

    运行CFSSL的PKI

    要运行基于CFSSL的PKI,请进入certs目录并运行以下命令。

    cfssl serve -address 192.168.10.151 -ca root_ca.pem -ca-key root_ca-key.pem -port 8888

    以下命令的输出将如下。

    root@test-vm:/home/john/Desktop/certs# cfssl serve -address 192.168.10.151 -ca root_ca.pem -ca-key root_ca-key.pem -port 8888
    2018/05/20 16:35:18 [INFO] Initializing signer
    2018/05/20 16:35:19 [WARNING] couldn't initialize ocsp signer: open : no such file or directory
    2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/scaninfo' is enabled
    2018/05/20 16:35:19 [WARNING] endpoint 'ocspsign' is disabled: signer not initialized
    2018/05/20 16:35:19 [INFO] endpoint '/' is enabled
    2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/info' is enabled
    2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/gencrl' is enabled
    2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/scan' is enabled
    2018/05/20 16:35:19 [WARNING] endpoint 'crl' is disabled: cert db not configured (missing -db-config)
    2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/certinfo' is enabled
    2018/05/20 16:35:19 [WARNING] endpoint 'revoke' is disabled: cert db not configured (missing -db-config)
    2018/05/20 16:35:19 [INFO] bundler API ready
    2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/bundle' is enabled
    2018/05/20 16:35:19 [INFO] setting up key / CSR generator
    2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/newkey' is enabled
    2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/init_ca' is enabled
    2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/sign' is enabled
    2018/05/20 16:35:19 [WARNING] endpoint 'authsign' is disabled: {"code":5200,"message":"Invalid or unknown policy"}
    2018/05/20 16:35:19 [INFO] endpoint '/api/v1/cfssl/newcert' is enabled
    2018/05/20 16:35:19 [INFO] Handler set up complete.
    2018/05/20 16:35:19 [INFO] Now listening on 192.168.10.151:8888

    机器的IP地址是192.168.10.151 ,端口是8888 。 允许防火墙中的此端口使用CFSSL。

    注意:以下命令仅指导使用cfssl实用程序。

    { cfssl serve [-address address] [-ca cert] [-ca-bundle bundle] 
    [-ca-key key] [-int-bundle bundle] [-int-dir dir] [-port port]
    [-metadata file] [-remote remote_host] [-config config]
    [-responder cert] [-responder-key key] [-db-config db-config] }

    现在,CFSSL的配置已完成,并且正在计算机上运行。 下一步是将CFSSL与Lemur集成。

    CFSSL PKI的狐猴配置

    现在,将修改Lemur的配置文件“lemur.conf.py”(例如URL,ROOT和Intermediate键)。 配置文件将包含有关CFSSL的信息。 狐猴配置文件的路径是“/home/lemur/.lemur/lemur.conf.py”。

    CFSSL_URL ="http://192.168.10.151:8888"
    CFSSL_ROOT ="""-----BEGIN CERTIFICATE-----
    MIICcjCCAhegAwIBAgIUahfYPc4RpK92G1ZHhu3q9URvf+8wCgYIKoZIzj0EAwIw
    9UmEM4IEd2j8/w4WdTYaBE5EzwIhAN3oW9iAmjcyzC/7BPIY/Sr+twig/+XwnQ8T
    hKXP2OHd
    -----END CERTIFICATE-----"""
    CFSSL_INTERMEDIATE ="""-----BEGIN CERTIFICATE-----
    MIICfDCCAiKgAwIBAgIUEeb8Duel8wySG61vCM2UEUD15XQwCgYIKoZIzj0EAwIw
    qM9lE82tku/b6SMxAlBByQ==
    -----END CERTIFICATE-----"""

    现在,运行“lemur start”命令以使用带有CFSSL设置的lemur.conf.py。

    使用CFSSL创建证书

    按照我们之前关于狐猴的文章 ,访问仪表板以使用CFSSL的根CA创建客户端证书。 首先,创建新的证书颁发机构并选择插件CFSSL作为根CA.

    1.设置新权限的不同参数。

    2.选择新设置的CFSSL插件作为根CA.

    在Lemur中设置新的证书颁发机构后,下一步是使用新设置的CFSSL插件生成证书。

  • 相关阅读:
    兴趣标签体系告诉我,闲鱼的95后是这样的...
    重磅报告 | 《中国企业2020:人工智能应用实践与趋势》
    this指针和类的继承 C++快速入门16
    构造器和析构器 C++快速入门15
    构造器和析构器 C++快速入门15
    鱼油账号记录程序(续) 零基础入门学习Delphi39
    鱼C扫描器 零基础入门学习Delphi40
    鱼油账号记录程序(续) 零基础入门学习Delphi39
    PEInfo编程思路讲解02 工具篇02|解密系列
    PEInfo编程思路讲解02 工具篇02|解密系列
  • 原文地址:https://www.cnblogs.com/sandshell/p/12014957.html
Copyright © 2020-2023  润新知