为什么fabric-ca以自签名证书开头?

时间:2018-12-03 19:16:55

标签: ssl ssl-certificate hyperledger-fabric hyperledger

这是我对流程的理解。

version: '2'

services:

  shop_ca:
    image: hyperledger/fabric-ca
    environment:
      - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
      - FABRIC_CA_SERVER_CA_NAME=shop_ca
      - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca-cert.pem
      - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/ca-key.pem
    ports:
      - "7054:7054"
    command: sh -c 'fabric-ca-server start -b admin3:admin3'
    volumes:
      - ./conf.yaml:/etc/hyperledger/fabric-ca-server/fabric-ca-server-config.yaml
    container_name: shop_ca

我将我的certfile和keyfile作为选项传递了。

fabric-ca-server启动时,应该做的是在/ etc / hyperledger / fabric-ca-server文件夹中创建ca-cert和ca-key pem文件。然后使用/etc/hyperledger/fabric-ca-server/fabric-ca-server-config.yaml配置文件生成最终证书(路径必须为/ etc / hyperledger / fabric-ca-server-config / ca-cert .pem),将用于颁发其他证书。

我不知道该生成的证书/etc/hyperledger/fabric-ca-server-config/ca-cert.pem是自签名的。问题是为什么?我认为它的作用是向/etc/hyperledger/fabric-ca-server/ca-cert.pem发出csr请求,并且此ca-cert.pem发出另一个ca-cert.pem。我想到了这个问题,因为当我使用openssl并打印最终生成的ca-cert证书时,颁发者和主题都相同。我认为发行人必须是/etc/hyperledger/fabric-ca-server/ca-cert.pem,主题必须是/etc/hyperledger/fabric-ca-server-config/ca-cert.pem.,但是发行人和主题都必须是/etc/hyperledger/fabric-ca-server-config/ca-cert.pem。为什么?

1 个答案:

答案 0 :(得分:1)

任何证书颁发机构的最上层根证书始终是自签名的(请查看本文底部的Verisign证书)...这就是为什么您明确信任根证书的原因。

Fabric CA允许您指定现有的根密钥对,或者如果指定的文件不存在,它将为您生成它们。 (如果证书文件存在,但是找不到匹配的私钥,则会出现错误,并且fabric-ca-server无法启动。)

fabric-ca-server生成自己的自签名密钥对时,实际上会在msp / keystore文件夹中生成私钥,但是如果指定,它将自签名X509证书存储在通过FABRIC_CA_SERVER_CA_CERTFILE指定的文件中,否则它将使用fabric-ca-server-config.yaml中的位置。请注意,如果您使用FABRIC_CA_SERVER_CA_CERTFILE替代,则该值不会在配置文件中更新(也许这会引起一些混乱)。

Verisign Primary

state