向Vault添加中间椭圆曲线

问题描述

我正在尝试使用以下方法将现有的椭圆曲线中间CA证书添加到保险柜中

vault write pki/config/ca pem_bundle=@bundle.json

bundle.json包含

{
    "pem_bundle":"-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n-----BEGIN EC PRIVATE KEY-----\...\n-----END EC PRIVATE KEY-----"
}

这给出了错误“在PEM块中找不到数据”-我相信这是因为它期望使用RSA证书。 看着https://www.vaultproject.io/api-docs/secret/pki

一个key_type参数可以设置为EC。但这似乎不适用于pki/config/ca

解决方法

submit a CA的API文档特别注意以下几点:

请注意,如果您通过HTTP API提供数据,则必须 JSON格式,用\ n替换换行符,就像这样...

这仅适用于HTTP API(例如:curl ... https://.../v1/pki/config/ca)。

但是,您正在使用vault write CLI命令,该命令为您完成了从输入到json格式的转换。 CLI命令的pem_bundle参数应该是包含普通PEM格式的证书和密钥的普通.pem文件的路径。例如:

-----BEGIN CERTIFICATE-----
...
...
-----END CERTIFICATE-----
-----BEGIN EC PRIVATE KEY-----
...
...
-----END EC PRIVATE KEY-----

您的最终调用将是:

vault write pki/config/ca pem_bundle=@ca_bundle.pem

还请注意,key_type参数仅在保险柜正在生成密钥时才需要。由于您提供了密钥,因此保管箱将正确检测密钥类型(请参见certutil.ParsePemBundle)。