我正在使用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 Encipherment
用于对称密钥加密(如果我输入错误,请更正)。
现在,我的问题是:
Key Encipherment
作为密钥用法?答案 0 :(得分:0)
Fabric CA当前支持颁发EC和RSA证书。默认的tls
配置文件设置了两者所需的密钥用法/扩展密钥用法。
如果要限制使用,可以在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约束设置为true。它并没有将它所签名的证书的密钥用法限制为自己的扩展名(这不是技术要求)。如果证书的使用者也希望基于颁发者强制执行证书的使用约束,则他们自己这样做。例如,openssl
确保允许CA使用所需的密钥用法来签署证书。但是,它不禁止其他扩展。