首页 > 解决方案 > 生成与 Hyperledger Fabric 兼容的 EC 密钥和 CSR 的建议 openssl 命令是什么?

问题描述

我们使用 openssl 生成 CSR(证书签名请求),如下所示。

openssl genpkey -genparam -algorithm ec -pkeyopt ec_paramgen_curve:P-384 -out ECPARAM.pem

openssl req -newkey ec:ECPARAM.pem -keyout PRIVATEKEY.key -out MYCSR.csr

从上面列出的 CSR 中的相应 CA 颁发并签署新的对等证书。

启动对等体时,输出以下错误:

2020-11-22 22:28:14.635 UTC [main] InitCmd -> ERRO 001 由于从目录 /etc/hyperledger/fabric/msp 设置类型为 bccsp 的 MSP 时出错,无法运行对等点:在 SigningIdentityInfo 中找不到 KeyMaterial

我想问题与openssl生成的EC Key的格式有关?下面是导致错误的私钥示例:

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIBEzBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIQtU4Ouojj6MCAggA
MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECC+I/OCseSp1BIHAeSmeCRFHlKzO
Hw1RK5wQi8hSulmi4HZjMJC6rofFFwGqgbBCKo9dBbJXYYsYc1AukAKyo+w6W4a3
0BpTGNAP4/eVB0dsFm7oHpJiZ2jmvgsYTHtchCciCastVph7zOfyggobPfEO97cU
iwtq3v1R5yGA1ic/2vIqtSxynnGzrTiUnwnrvPC0hXMYiDHmYfN66BK898bfcaXp
MqnBFfOQSRAtVzN71hiBWjGjVm3Y4e/vDYse/GLsseDnPK9fw3XA
-----END ENCRYPTED PRIVATE KEY-----

与cryptogen工具生成的密钥比较后,它们具有不同的标题行和长度:

-----BEGIN EC PRIVATE KEY-----
MIGkAgEBBDBXq+IIvjEQITYhxIui0ivOY/eVH1Ql8R5wXowiPSdLwZbsIrk6LHjw
jB8D9oqOW4agBwYFK4EEACKhZANiAASNt3bW+GicurJPRaj+oaY/xjaD9Mf/ic4i
3fdgI7wQnvXnGLX0Lf5ygd5ZyyhPW2Tvj7FdOW4vzaqZqSHkaG37GaP6JxpmR3/l
HuF+tncpsjUY7SXTCfzIysxvod9gN9g=
-----END EC PRIVATE KEY-----

有什么建议可以解决这个问题吗?

标签: opensslcryptographyhyperledger-fabric

解决方案


Fabric 不支持加密密钥。使用 openssl 生成私钥时,您应该能够传递-nocrypt生成未加密密钥的选项,或者您可以将加密密钥转换为未加密密钥:

openssl ec -in PRIVATEKEY.key -out PK_UNENCRYPPTED.pem


推荐阅读