Hyperledger Fabric SDK-https和TLS证书/密钥

时间:2018-09-10 18:33:09

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

注意:我正在使用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 /对等方/订购方之间的连接安全吗?

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


注意:This question/answer似乎表明您不需要相互TLS来进行安全连接,但是如果我在我的CA url中添加https:,在填写{{ 1}}部分。



[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

1 个答案:

答案 0 :(得分:0)

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

  

1)最简单的方法来保护(https)   SDK(客户端)和CA /对等方/订购方?

sdk节点不支持与启用了clientauth(又称为双向TLS)[1]的结构ca服务器通信

已根据tlsCACerts中的证书验证了(启用TLS的)服务器提供的TLS证书。可以将验证过程视为在以下命令中运行:

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

tlsCACerts属性是在network-config.yaml文件中为每个对等方,订购者和结构ca服务器设置的-如果需要,它们都可以使用不同的tlsCACerts

对于对等方和订购者,节点sdk确实支持clientauth(或双向TLS),但是必须在代码中进行设置,而不是如[{2]中所述的配置文件-请参阅本节中的说明使用client.setTlsClientCertAndKey(cert, key)

问题中的陈述

  

tlsCACerts部分用于相互TLS连接

是错误的。

  

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

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

此问题中的陈述

  https连接不需要

相互TLS(大多数浏览器)   不要使用双向TLS来确保连接的安全性。

是正确的。相互TLS支持双向验证,即服务器还可以验证客户端。在单向TLS中,只有客户端才能验证服务器。