我正在尝试设置CFSSL(v1.4.1
),之后这教程我已经生成了以下文件(自签名)
ROOT_CA_CSR.json
intermediate_ca-key.pem
intermediate_ca.csr
intermediate_ca.pem
intermediate_ca_csr.json
root_ca-key.pem
root_ca.csr
root_ca.pem
root_to_intermediate_ca.json
想要使用 API 生成证书,我需要使用cfssl serve -ca=ca.pem -ca-key=ca-key.pem -address=0.0.0.0"
(参考)。对于任何我想使用的设备证书生成中间的键(仅限)。
我需要在cfssl serve
命令中进行哪些更改,以便 cfssl 生成的证书将使用中间密钥并使用 postgres 数据库?
答案1
命令行应如下:
cfssl serve -loglevel 1 -address 0.0.0.0 -port 8888 \
-ca-key intermediate_ca-key.pem -ca intermediate_ca.pem \
-config profiles.json
-db-config db.json
文档中描述了profiles.json文件的基本语法https://github.com/cloudflare/cfssl/blob/master/doc/cmd/cfssl.txt
db.json 文件的语法描述如下https://github.com/cloudflare/cfssl/blob/master/certdb/README.md文件和创建数据库的 DDL 位于 Github 项目的“/certdb”目录下 - 每个数据库引擎都有一个专用目录,例如 PostgreSQL 的 DDL 文件位于https://github.com/cloudflare/cfssl/tree/master/certdb/pg/migrations目录
请仔细阅读以下安全备注:
根据您的配置文件设置,cfssl 可以启动以下签名设施:
- “sign” - 支持 PEM 编码的公共(因此完全不需要身份验证)端点。这很有用,因为它使您能够使用 OpenSSL 等标准工具使用第三方生成的 CSR 进行签名,但这是一个巨大的安全漏洞,因为任何可以访问 cfssl 端点的人都可以生成证书。
- “authsign”- 经过身份验证的端点(它使用共享密钥),仅支持 CFSSL JSON 编码的 CSR
无论您使用其中哪一种,您至少必须启用 TLS 以确保通信机密性(您正在该通道上进行身份验证)。如果您需要支持 PEM 编码的 CSR,因此需要“签名”端点,请设置 cfssl 以使用相互 TLS 身份验证。
上述两项措施应该足以缓解安全缺陷。
如果你需要快速学习如何设置基于 cfssl 的 PKI,你可能会发现这本书很有用“利用 Cloudflare 的 PKI 和 TLS 工具包实现功能齐全的 PKI“,因为它提供了一种“通过示例”的方法,其中功能齐全的实验室涵盖了大多数可用选项。
答案2
这很有帮助:
cfssl serve -db-config=sqlite_db.json -ca=server/server.pem -ca-key=server/server-key.pem -config=config.json
来源 :
-https://propellered.com/posts/cfssl_setting_up_ocsp_api/
-https://propellered.com/posts/cfssl_setting_up/