我正在使用 Fabric CA 在 Hyperledger Fabric 中生成证书。我正在传递一个自签名证书作为 HLF 中注册和 TLS 证书颁发的根证书。它用于测试目的,因此使用相同的 Fabric CA(单一根证书)来颁发注册和 TLS 证书。根证书有以下 Key Usages
:
X509v3 Key Usage: critical
Digital Signature, Certificate Sign, CRL Sign
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
在节点注册证书中,我有以下 Key Usages
:X509v3 Key Usage: critical
Digital Signature
现在,对于 TLS 证书,我运行 fabric-ca-client enroll
命令并通过 --enrollment.profile tls
作为调用的参数之一。当我解码节点 TLS PEM 证书时,我得到以下 Key Usages
:X509v3 Key Usage: critical
Digital Signature, Key Encipherment, Key Agreement
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
现在,我指的是一个 RFC here识别椭圆曲线密码学主题公钥信息 .在第 3 节中,我读到 Key Encipherment
不是椭圆曲线证书的有效 key 使用扩展。通过更多的研究,我还发现,Key Encipherment
用于对称 key 加密(如果我错了,请纠正我)。现在,我的问题是:
Key Encipherment
如果不符合 ECC RFC 标准,作为节点 TLS 证书中的 key 用法? 最佳答案
Fabric CA 目前支持颁发 EC 和 RSA 证书。默认 tls
profile 设置两者所需的 key 用法/扩展 key 用法。
如果你想限制使用,你可以编辑tls
fabric-ca-server-config.yaml
中的签名配置文件部分:
signing:
default:
usage:
- digital signature
expiry: 8760h
profiles:
ca:
usage:
- cert sign
- crl sign
expiry: 43800h
caconstraint:
isca: true
maxpathlen: 0
tls:
usage:
- signing
- server auth
- client auth
expiry: 8760h
Fabric CA 仅检查以确保根证书的 CA 约束设置太正确。它不限制它签署的证书的 key 用法到它自己的扩展(这不是技术要求)。如果证书的消费者也希望基于颁发者对证书实现使用限制,他们自己会这样做。 openssl
例如,确保允许 CA 使用它需要的 key 使用来签署证书。但它并不禁止其他扩展。
关于ssl - Hyperledger Fabric 节点 TLS 证书中的 key 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63012766/