該方案與Hyperledger Fabric 1.0 從零開始(五)——運行測試e2e相似,根據企業須要,能夠控制各節點的域名,及聯盟鏈的統一域名。能夠指定單獨節點的訪問,生成指定的公私鑰、證書等文件。具體的參數配置能夠參考generateArtifacts.sh文件,可執行自動化生成,也能夠按照該腳本里的命令手動生成。html
參照3.1、運行fabric-samples的問題說明,首先咱們在/opt/gopath/src/github.com/hyperledger/fabric下建立一個自定義目錄,該目錄名稱應與實際生產環境中組織節點的名稱一致,如:example。node
咱們計劃將在orderer服務器中生成必要的證書等文件,所以在example下將繼續建立一個orderer目錄,咱們將下載好的bin目錄上傳至/opt/gopath/src/github.com/hyperledger/fabric/example/orderer目錄下,具體效果以下視圖:git
正如3.1小節所述,在bin目錄中是Fabric平臺特定使用的二進制文件cryptogen,configtxgen,configtxlator, 以及peer。github
咱們能夠經過configtxgen和cryptogen手動生成證書/密鑰以及各項配置文件。服務器
(注:英文閱讀能力好的同窗能夠直接參考官方文檔)網絡
在正式使用上述兩個文件以前,咱們須要在bin目錄下先建立兩個yaml文件,分別是crypto-config.yaml和configtx.yaml,這兩個文件具體能夠在/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli這個目錄下找到對應的官方示例,以官方示例爲基礎進行修改,改爲咱們生產上所需的具體內容。工具
咱們假定要組建一個名爲example的聯盟,且咱們本身的組織名稱爲Demo,咱們會建立一個Orderer排序服務節點,同時還會建立一個peer節點。測試
那麼修改後的crypto-config.yaml以下:ui
1 OrdererOrgs: 2 - Name: Orderer 3 Domain: example.com 4 Specs: 5 - Hostname: orderer 6 PeerOrgs: 7 - Name: Demo 8 Domain: demo.example.com 9 Template: 10 Count: 1 11 Users: 12 Count: 1
這裏咱們使用crytogen工具給咱們不一樣的網絡實體(peer/client)生成加密證書(X509 certs)。這些證書表明了身份,當咱們的網絡實體在進行通訊以及transact的時候進行簽名與驗證身份。this
crypto-config.yaml配置文件將被crytogen工具調用,文件中包括了網絡拓撲,同時容許咱們給organization(Demo)以及component(隸屬於organization的組件)生成一個證書與私鑰的集合。每個organization(Demo)被分配一個惟一的根證書(綁定了隸屬於organization(Demo)的具體的component,包括peers與orderers)。Hyperledger Fabric的transaction與通訊均被節點的私鑰(keystore)進行簽名,截止被公鑰進行驗證(signcerts)。 這個配置文件中有一個計數(count)的變量,咱們使用其定義organization(Demo)中peer的數量,在本例中咱們定義Demo組織有一個peer。
在crypto-config.yaml配置文件中,咱們能夠看到在ordererOrgs頭下面的「Name」, 「Domain」 以及 「Specs」這三個參數,命名規則約定以下:「{{.Hostname}}.{{.Domain}}」。使用官方提供的的crypto-config.yaml中的ordering node做爲參考,咱們能看到一個名稱爲 - orderer.example.com的ordering node,該node與Orderer的MSP ID關聯。
接下來開始使用crytogen工具執行crypto-config.yaml配置文件,crytogen工具在bin目錄下,咱們須要先進入該目錄,並執行crypto-config.yaml配置文件,具體命令以下:
cd /opt/gopath/src/github.com/hyperledger/fabric/example/orderer/bin
./bin/cryptogen generate --config=./crypto-config.yaml
根據上述命令,能夠看出crypto-config.yaml被上傳至bin目錄下,執行結果以下視圖:
此過程當中可能會提示權限不足,以下視圖:
這裏使用chmod +x來賦權便可,不作詳細說明。
完成以後會在bin目錄下生成一個新的目錄crypto-config,其中會有ordererOrganizations和peerOrganizations兩個目錄,具體結果視圖以下:
接下來,咱們須要使用configtxgen工具來執行configtx.yaml文件建立orderer Genesis block,在此以前須要爲configtxgen工具指定configtx.yaml文件的路徑,咱們須要設置一個環境變量,執行以下命令:
export FABRIC_CFG_PATH=$PWD
隨後能夠打印查看該目錄是否正確,具體執行命令以下:
echo $PWD
結果以下視圖:
在bin目錄下建立channel-artifacts目錄,用來存放各類渠道的源文件。
編輯configtx.yaml文件,結果以下:
1 Profiles: 2 3 ExampleOrdererGenesis: 4 Orderer: 5 <<: *OrdererExample 6 Organizations: 7 - *OrdererDemo 8 Consortiums: 9 ExampleConsortium: 10 Organizations: 11 - *Demo12 ExampleChannel: 13 Consortium: ExampleConsortium 14 Application: 15 <<: *ApplicationExample 16 Organizations: 17 - *Demo18 Organizations: 19 20 - &OrdererDemo 21 Name: OrdererDemo 22 ID: OrdererMSP 23 MSPDir: crypto-config/ordererOrganizations/example.com/msp 24 25 - &Demo26 Name: DemoMSP 27 ID: DemoMSP 28 MSPDir: crypto-config/peerOrganizations/demo.example.com/msp 29 AnchorPeers: 30 - Host: peer0.demo.anti-moth.com 31 Port: 7051 32 33 Orderer: &OrdererExample 34 35 OrdererType: solo 36 37 Addresses: 38 - orderer.example.com:7050 39 40 BatchTimeout: 2s 41 BatchSize: 42 MaxMessageCount: 10 43 AbsoluteMaxBytes: 99 MB 44 PreferredMaxBytes: 512 KB 45 46 Kafka: 47 Brokers: 48 - 127.0.0.1:9092 49 Organizations: 50 51 Application: &ApplicationExample 52 53 Organizations:
在該文件中,咱們定義了組織名稱、組織排序服務名稱、組織渠道名稱、應用渠道名稱、應用聯盟名稱等。
根據6.3中配置文件的描述,咱們將生成的orderer源爲ExampleOrdererGenesis。
本步驟將生成genesis.block文件,具體執行命令以下:
./bin/configtxgen -profile ExampleOrdererGenesis -outputBlock ./channel-artifacts/example_genesis.block
該命令會在/opt/gopath/src/tk/bin/channel-artifacts目錄下生成一個genesis.block文件,根據官方demo中的configtx.yaml文件描述,該文件名因爲未知緣由,不得命名爲order.genesis.block。
完成命令後的視圖以下:
具體官方指定方案截圖以下,可參考官網實現:
根據6.3中配置文件的描述,咱們將生成的channel源爲ExampleChannel。
本步驟將生成channel.tx文件,具體執行命令以下:
./bin/configtxgen -profile ExampleChannel -outputCreateChannelTx ./channel-artifacts/example_channel.tx -channelID channel01
完成命令後的視圖以下:
按照官方給定的方案,執行該方法前能夠先指定channel的環境變量,以下視圖:
上圖官方描述的具體執行命令以下:
1 export CHANNEL_NAME=mychannel 2 3 # this file contains the definitions for our sample channel 4 ../bin/configtxgen -profile ExampleChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME
該步驟最終執行結果視圖以下:
根據6.3中配置文件的描述,咱們將生成的channel源爲ExampleChannel。
本步驟將生成channel.tx文件,具體執行命令以下:
./bin/configtxgen -profile ExampleChannel -outputAnchorPeersUpdate ./channel-artifacts/DEMOMSPanchors.tx -channelID channel01 -asOrg DemoMSP
完成命令後的視圖以下:
具體官方指定方案截圖以下,可參考官網實現:
最終咱們能夠在channel-artifacts目錄下看到成功建立了TKMSPanchors.tx文件,以下視圖:
【注:請無視這其中目錄等名稱的一些小細節,這一章主要是講述如何經過官方給定的二進制文件來生成咱們須要的生產證書等配置資源】