这是我对流程的理解。
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
。为什么?
答案 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