我很难理解Hyperledger Fabric中加密材料的生成。我注意到有一个类似的问题Hyperledger fabric Crypto materials,我之前也曾问过这个问题Questions on hyperledger fabric MSP setting。但是我仍然很困惑。
我遵循示例Building Your First Network,我注意到使用cryptogen
工具并使用了crypto-config.yaml
。它为订购者和组织生成密钥和证书。
例如,在crypto-config/peerOrganizations/org1.example.com/
的目录中,该目录有两个对等方和一个用户,
它具有以下结构
|-- ca
|-- msp
| |-- admincerts
| |-- cacerts
| `-- tlsacerts
|-- peers
| |-- peer0.org1.example.com
| | |-- msp
| | | |-- admincerts
| | | |-- cacerts
| | | |-- keystore
| | | |-- signcerts
| | | `-- tlscacerts
| | `-- tls
| `-- peer1.org1.example.com
| |-- msp
| | |-- admincerts
| | |-- cacerts
| | |-- keystore
| | |-- signcerts
| | `-- tlscacerts
| `-- tls
|-- tlsca
|-- users
|-- Admin@org1.example.com
| |-- msp
| | |-- admincerts
| | |-- cacerts
| | |-- keystore
| | |-- signcerts
| | `-- tlscacerts
| `-- tls
`-- User1@org1.example.com
|-- msp
| |-- admincerts
| |-- cacerts
| |-- keystore
| |-- signcerts
| `-- tlscacerts
`-- tls
peers
下的文件是该特定对等节点(区块链网络的一部分)的身份,而users
下的文件是最终用户(即客户?)的身份。我正确吗?
对于peer#@org1.example.com
下的文件:
keystore
(私钥)用于在最终用户调用交易时(例如,使用命令peer invoke ....
)对交易进行签名。私钥也用于签注吗?signcerts
(公共密钥)用于验证订购者和提交者认可的交易身份。因此,公钥应分发给所有对等方和订购者,但是如何呢? admincerts
,cacerts
,tlscacerts
和tls
的目的是什么?为什么tls
不在msp
下?也许我对MSP不太了解类似于以上第2点,users
下的密钥和证书的目的是什么?它们仅用于登录区块链吗?还是将它们也用于签署交易?也许用于访问部分区块链(私有数据和访问控制?)
此外,我还注意到admincerts
,peer0.org1.example.com
和peer1.org1.example.com
下的Admin@org1.example.com
是相同的。但是它们不同于admincerts
的{{1}}。这使我提出疑问,为什么User1需要管理员证书?
在最上层(不向User1@org1.example.com
和peers
倾斜),我们仍然有三个目录:users
,ca
和{{1 }}。他们的目的是什么?这些密钥和证书似乎不属于任何人。而且据说msp
没有CA,为什么这里仍然有tlsa
?
谢谢!