1. 程式人生 > >Fabric通過cryptogen生成證書目錄內容解析

Fabric通過cryptogen生成證書目錄內容解析

本文主要參考了搭建基於hyperledger fabric的聯盟社群(八) --Fabric證書解析,原文更為詳細,本文主要方便自查

Fabric可以通過cryptogen生成網路所需的所有證書及金鑰,現將各目錄內容敘述如下。

生成證書配置

用於生成證書目錄的配置檔案crypto-config.yaml內容如下所示

# "OrdererOrgs" - Definition of organizations managing orderer nodes
OrdererOrgs:
  - Name: Mango
    Domain: mango.com
    # Specs is an array of Spec entries.  Each Spec entry consists of two fields : Hostname and CommonName
    Specs:
      - Hostname: orderer
# "PeerOrgs" - Definition of organizations managing peer nodes
PeerOrgs:
  - Name: Mango
    Domain: mango.com
    # Allows for the definition of 1 or more hosts that are created sequentially
    # from a template. By default, this looks like "peer%d" from 0 to Count-1.
    # You may override the number of nodes (Count), the starting index (Start)
    # or the template used to construct the name (Hostname).
    Template:
      Count: 2

證書目錄解析

通過下面命令根據上述配置生成證書

mkdir -p crypto-config
./bin/cryptogen generate --config=./crypto-config.yaml

每個目錄和對應檔案的功能如下:

crypto-config
├── ordererOrganizations
│   └── mango.com # domain
│       ├── ca
│       │   ├── ca.mango.com-cert.pem
│       │   └── ed9854ea794ed178750ab5fff0b8f7a4c4938721e85de25a65e171dac4dadf41_sk
│       ├── msp
│       │   ├── admincerts
│       │   │   └── 
[email protected]
│   │   ├── cacerts │   │   │   └── ca.mango.com-cert.pem │   │   └── tlscacerts │   │   └── tlsca.mango.com-cert.pem │   ├── orderers │   │   └── orderer.mango.com │   │   ├── msp │   │   │   ├── admincerts │   │   │   │   └──
[email protected]
│   │   │   ├── cacerts │   │   │   │   └── ca.mango.com-cert.pem │   │   │   ├── keystore │   │   │   │   └── b1ee6269b624746f682843f566dcfdbb9b1318ea36d605becc13843f52d13e2c_sk │   │   │   ├── signcerts │   │   │   │   └── orderer.mango.com-cert.pem │   │   │   └── tlscacerts │   │   │   └── tlsca.mango.com-cert.pem │   │   └── tls │   │   ├── ca.crt │   │   ├── server.crt │   │   └── server.key │   ├── tlsca │   │   ├── 30fe7e37c6b416049d567b99d07d4d0fca282d28cf51819a8ba9cb12a4b1b5c1_sk │   │   └── tlsca.mango.com-cert.pem │   └── users │   └── [email protected] │   ├── msp │   │   ├── admincerts │   │   │   └── [email protected] │   │   ├── cacerts │   │   │   └── ca.mango.com-cert.pem │   │   ├── keystore │   │   │   └── 749735ce27f18879efa1ffdf76bf9d800ccb0298c826cee2c2d68217eb731610_sk │   │   ├── signcerts │   │   │   └── [email protected] │   │   └── tlscacerts │   │   └── tlsca.mango.com-cert.pem │   └── tls │   ├── ca.crt │   ├── client.crt │   └── client.key └── peerOrganizations └── org1.mango.com ├── ca # 存放組織的根證書和對應的私鑰檔案,預設採用EC演算法,證書為自簽名。組織內的實體將基於該證書作為證書根。 │   ├── 2c3c2cde48c8f1b5eb0fd54e0b1865d6b5bc3269ebba8cb5ac5a7dfbbd303367_sk │   └── ca.org1.mango.com-cert.pem ├── msp # 存放代表該組織的身份資訊。 │   ├── admincerts # 組織管理員的身份驗證證書,被根證書籤名。 │   │   └── [email protected] │   ├── cacerts # 組織的根證書,同ca目錄下檔案。 │   │   └── ca.org1.mango.com-cert.pem │   └── tlscacerts # 用於TLS的ca證書,自簽名。 │   └── tlsca.org1.mango.com-cert.pem ├── peers # 存放屬於該組織的所有peer節點。 │   ├── peer0.org1.mango.com # 第一個peer的資訊,包括其msp證書和TLS證書兩類。 │   │   ├── msp │   │   │   ├── admincerts # 組織管理員的身份驗證證書。peer將基於這些證書來認證交易簽署這是否為管理員身份。 │   │   │   │   └── [email protected] │   │   │   ├── cacerts # 組織的根證書. │   │   │   │   └── ca.org1.mango.com-cert.pem │   │   │   ├── keystore # 本節點的身份私鑰,用來簽名。 │   │   │   │   └── d35fbb340c84ad06ffd6d58addaf694a62e23adf53066b9a287f86edbf6dd476_sk │   │   │   ├── signcerts # 驗證本節點簽名的證書,被組織根證書籤名。 │   │   │   │   └── peer0.org1.mango.com-cert.pem │   │   │   └── tlscacerts # TLS連線用的身份證書,即組織TLS證書。 │   │   │   └── tlsca.org1.mango.com-cert.pem │   │   └── tls # 存放tls相關的證書和私鑰 │   │   ├── ca.crt # 組織的根證書 │   │   ├── server.crt # 驗證本節點簽名的證書,被組織根證書籤名。 │   │   └── server.key # 本節點的身份私鑰,用來簽名。 │   └── peer1.org1.mango.com # 第二個peer的資訊,結構類似。(省略) │   ├── msp │   │   ├── admincerts │   │   │   └── [email protected] │   │   ├── cacerts │   │   │   └── ca.org1.mango.com-cert.pem │   │   ├── keystore │   │   │   └── ecfeefdab7f95113064a00227d7af5cb3ae448ec1334a932f768010b95dc32f3_sk │   │   ├── signcerts │   │   │   └── peer1.org1.mango.com-cert.pem │   │   └── tlscacerts │   │   └── tlsca.org1.mango.com-cert.pem │   └── tls │   ├── ca.crt │   ├── server.crt │   └── server.key ├── tlsca 存放組織tls連線用的根證書和私鑰檔案。(TLS是傳輸層安全協議,其實就是SSL,現在叫TLS了) │   ├── 65b65931318b4aa19ae15d1da75413c68371d1506237311fc7244c8e46c1ba8a_sk │   └── tlsca.org1.mango.com-cert.pem # TLS根證書 └── users 存放屬於該組織的使用者的實體。 └── [email protected] # 管理員使用者的資訊,包括其msp證書和tls證書兩類。 ├── msp │   ├── admincerts # 組織根證書作為管理者身份驗證證書。 │   │   └── [email protected] │   ├── cacerts # 組織的根證書. │   │   └── ca.org1.mango.com-cert.pem │   ├── keystore # 本使用者的身份私鑰,用來簽名。 │   │   └── 22e70042f7dd79f35ea92a285d2377a673163805f85c9bf160c87de82db52a4c_sk │   ├── signcerts # 管理員使用者的身份驗證證書,被組織根證書籤名。要被某個Peer認可,則必須放到該peer的msp/admincerts下。 │   │   └── [email protected] │   └── tlscacerts # TLS連線用的身份證書,即組織TLS證書。 │   └── tlsca.org1.mango.com-cert.pem └── tls # 存放tls相關的證書和私鑰 ├── ca.crt # 組織的根證書 ├── client.crt # 管理員的使用者身份驗證證書,被組織根證書籤名。 └── client.key # 管理員使用者的身份私鑰,用來簽名。