【问题标题】:Hyperledger Fabric SDK - https & TLS Cert / KeyHyperledger Fabric SDK - https 和 TLS 证书/密钥
【发布时间】:2019-02-15 05:31:31
【问题描述】:

注意:我使用的是 Go SDK,但这应该适用于 Node、Java 等 SDK。

我使用fabric-ca 实例作为我的证书颁发机构,对于实际的生产环境,我需要使用安全连接。

基于config-e2e.yaml 示例配置文件[1],我们应该能够在CA url 中使用https。示例:

certificateAuthorities:
  org1-ca:
    url: https://localhost:7054

但是,一旦需要 https,SDK 就会要求在 client 部分 [1] 中添加 TLS 证书/密钥文件路径:

tlsCACerts:
      # Comma-Separated list of paths
      path: {filepath}
      # Client key and cert for SSL handshake with Fabric CA
      client:
        key:
          path: {filepath}
        cert:
          path: {filepath}

但是,其他文档 [2] 表明 tlsCACerts 部分用于双向 TLS 连接,并且基于我对 TLS [3] 的有限理解,https 连接不需要双向 TLS(大多数浏览器不要使用双向 TLS 来保护连接)。

谁能解释一下:

1) 保护 (https) SDK(客户端)和 CA/peer/orderer 之间连接的最简单方法?

2) 为什么我们将 TLS 证书/密钥文件路径硬编码到配置文件中,而在生产中使用时应该经常刷新这些文件路径?


注意:This question/answer 似乎表明您不需要双向 TLS 来实现安全连接,但如果我将 https: 添加到我的 CA url,我会收到错误,直到我填写 tlsCACerts 部分。



[1]https://github.com/hyperledger/fabric-sdk-go/blob/master/test/fixtures/config/config_e2e.yaml
[2](参见“客户端身份验证”与服务器端 TLS 设置)https://hyperledger-fabric.readthedocs.io/en/release-1.2/enable_tls.html
[3]http://www.cafesoft.com/products/cams/ps/docs32/admin/SSLTLSPrimer.html

【问题讨论】:

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


    【解决方案1】:

    下面的答案是w.r.t。 Node SDK,但希望他们能对这个问题有所了解

    1) 最简单的方法来保护 (https) 之间的连接 SDK(客户端)和CA/peer/orderer?

    node sdk 不支持与启用了 clientauth(又名双向 TLS)的 Fabric ca 服务器通信 [1]

    (启用 TLS 的)服务器提供的 TLS 证书根据 tlsCACerts 中的证书进行验证。验证过程可以认为是运行以下命令:

    openssl verify -CAfile <tlsCACerts> <cert-provided-by-server>
    

    tlsCACerts 属性是在 network-config.yaml 文件中为每个 peer、orderer 和 fabric ca 服务器设置的 - 如果他们愿意,他们都可以使用不同的 tlsCACerts

    对于 peer 和 orderer,node sdk 确实支持 clientauth(或双向 TLS),但它必须在代码中设置,而不是在 [2] 中描述的配置文件中 - 请参阅他们展示如何使用的部分client.setTlsClientCertAndKey(cert, key)

    问题中的陈述

    tlsCACerts 部分用于双向 TLS 连接

    错了。

    2) 为什么我们将 TLS 证书/密钥文件路径硬编码到配置文件中 在生产中使用时应该经常刷新这些什么时候?

    我认为这些内容不会经常刷新。如果它们是,那么具有讽刺意味的是,config 将是 IMO 的正确位置。

    问题中的这句话

    https 连接不需要相​​互 TLS(大多数浏览器 不要使用双向 TLS 来保护连接)。

    是正确的。双向 TLS 启用双向验证,即服务器也验证客户端。在单向 TLS 中,只有客户端验证服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      • 2018-11-23
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      相关资源
      最近更新 更多