将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插件生成证书。

原文地址:https://www.cnblogs.com/sandshell/p/12014957.html