首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hyperledger Fabric节点TLS证书中的密钥使用

Hyperledger Fabric节点TLS证书中的密钥使用
EN

Stack Overflow用户
提问于 2020-07-21 10:43:01
回答 1查看 487关注 0票数 2

我正在使用Fabric CA在Hyperledger Fabric中生成证书。我正在传递一个自签名证书作为HLF注册和TLS证书颁发的根证书。它是用于测试的,所以使用相同的Fabric CA (单根证书)来颁发注册证书和TLS证书。根证书具有以下Key Usages

代码语言:javascript
运行
复制
X509v3 Key Usage: critical
    Digital Signature, Certificate Sign, CRL Sign
X509v3 Extended Key Usage:
    TLS Web Server Authentication, TLS Web Client Authentication

在节点注册证书中,我有以下Key Usages

代码语言:javascript
运行
复制
X509v3 Key Usage: critical
    Digital Signature

现在,对于TLS证书,我运行fabric-ca-client enroll命令并将--enrollment.profile tls作为调用的参数之一传递。当我解码节点TLS证书时,我得到以下Key Usages

代码语言:javascript
运行
复制
X509v3 Key Usage: critical
    Digital Signature, Key Encipherment, Key Agreement
X509v3 Extended Key Usage:
    TLS Web Server Authentication, TLS Web Client Authentication 

现在,我参考了一个RFC 这里来识别椭圆曲线密码学主题的公钥信息。在第三节中,我看到Key Encipherment不是椭圆曲线证书的有效密钥使用扩展.通过进一步的研究,我还发现,Key Encipherment用于对称密钥加密(如果我错了,请纠正我)。

现在,我的问题是:

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

回答 1

Stack Overflow用户

发布于 2020-07-31 11:44:02

Fabric CA目前支持同时颁发EC和RSA证书。默认的tls配置文件设置双方所需的密钥使用/扩展密钥使用。

如果要限制使用,可以在tls中编辑fabric-ca-server-config.yaml签名配置文件部分。

代码语言:javascript
运行
复制
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使用它所需的密钥对证书进行签名。不过,它并不禁止其他延期。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63012766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档