【问题标题】:Key usage in Hyperledger Fabric node TLS CertificatesHyperledger Fabric 节点 TLS 证书中的密钥用法
【发布时间】:2020-07-21 10:43:01
【问题描述】:

我正在使用 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 用于对称密钥加密(如果我错了,请纠正我)。

现在,我的问题是:

  1. 如果不符合 ECC RFC 标准,为什么 Fabric CA 在节点 TLS 证书中添加 Key Encipherment 作为密钥用法?
  2. 在椭圆曲线证书和密钥的情况下,TLS 通信实际上是如何发生的?

【问题讨论】:

  • 我强烈建议您在邮件列表中提出这个问题,您更有可能让我们的一位实施此问题的加密专家(并且拥有深厚的技术背景)来回答您的问题:@ 987654322@

标签: ssl hyperledger-fabric tls1.2 hyperledger-fabric-ca


【解决方案1】:

Fabric CA 目前支持颁发 EC 和 RSA 证书。默认的tls 配置文件设置两者所需的密钥用法/扩展密钥用法。

如果你想限制使用,你可以编辑fabric-ca-server-config.yaml中的tls签名配置部分:

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 约束设置太正确。它不限制它签署到它自己的扩展的证书的密钥用法(这不是技术要求)。如果证书的消费者也希望基于颁发者对证书实施使用限制,他们自己会这样做。例如,openssl 确保允许 CA 使用它所需的密钥使用来签署证书。但它并不禁止其他扩展。

【讨论】:

  • 我明白了。比方说,如果我们按照 RFC,依靠用户创建遵循 EC 标准的节点证书是最佳实践,还是开发一个 CA 服务来保证遵循这些标准是否足够好。出现这个问题主要是因为节点TLS证书理论上不能用于Key Encirpherment。但是,我想不出 HLF 中的负面情况——如果节点 TLS 证书具有该密钥用法,这将对网络构成威胁。
  • 这里没有问题。我们真的希望 TLS 和注册的单独配置文件来处理关注点的分离,这样相同的证书就不会同时用于签名和 TLS。
猜你喜欢
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
相关资源
最近更新 更多