Hyperledger Fabric手動生成CA證書搭建Fabric網路
之前介紹了使用官方指令碼自動化啟動一個Fabric網路,並且所有的證書都是通過官方的命令列工具cryptogen
直接生成網路中的所有節點的證書。在開發環境可以這麼簡單進行,但是生成環境下還是需要我們自定義對網路中的節點的證書進行配置。
所以在本文中,將會詳細介紹一個從手動生成證書一直到啟動網路的整體步驟。本文只交代整體的搭建步驟。對於Fabric-Ca的講解不在本文的範圍內,將在另一篇文章中說明。
正篇文章也是根據官方的文件進行的。但是由於官方的文件尚未完工,也是好多沒有交代清楚的,並且有些地方是錯誤的,所以筆者也是一步一步摸索出來的,所以如果本文哪裡沒有交代清楚或者錯誤的地方,希望各位批評指正。
在這裡貼出官方文件地址.
1.整體架構
架構圖直接貼過來好了:
官方文件採用的是多機環境,這裡簡潔化一點,所有的操作都在一臺機器上進行,至於多機環境,以後再補充好了。
介紹一下本文所採用的整體架構:
- 三個組織
- Org0 -> 組織0
- Org1 -> 組織1
- Org2 -> 組織2
- Org0 -> 組織0
- 組織中的成員
- Org0 一個Orderer節點,一個Org0的Admin節點
- Org1 兩個Peer節點,一個Org1的Admin節點,一個Org1的User節點
- Org2 兩個Peer節點,一個Org2的Admin節點,一個Org2的User節點
- 共有四臺CA伺服器
- TLS伺服器 -> 為網路中所有節點頒發TLS證書,用於通訊的加密
- Org1的CA伺服器 -> 為組織1中所有使用者頒發證書
- Org2的Ca伺服器 -> 為組織2中所有使用者頒發證書
- Org0的CA伺服器 -> 為組織0中所有使用者頒發證書
這裡的四臺CA伺服器都是根伺服器。彼此之間都是獨立的存在,沒有任何關係。,也就是說每一個CA伺服器生成的證書在其他CA伺服器都是不能用的。
介紹完之後,可以進入正題了。
1.1Fabric,Fabric-Ca安裝
本文預設讀者都是對Fabric有一定的瞭解的,所以一些安裝過程這裡就沒有重複說明。
第一步是安裝Fabric-Ca環境,可以參考這裡,這篇文章還沒有寫完,以後慢慢補,不過環境的安裝已經有說明。
還有就是Fabric的環境安裝,可以參考這裡。
完成環境搭建後,我們還需要一個HOME
資料夾,用於存放我們生成的證書檔案與fabric
配置相關的檔案。
本文設定HOME
資料夾路徑為:
$GOPATH/src/github.com/caDemo/
請讀者自行建立,一般不要用太複雜的路徑,也不要用中文路徑,會為之後的操作帶來很多麻煩。在下文中簡單稱HOME
資料夾為工作目錄,除非特殊說明,一般命令的執行都是在工作目錄進行。
2 CA伺服器配置
2.1啟動TLS CA伺服器
前期工作準備好之後,我們開始啟動第一臺CA伺服器。本文中使用Docker
容器啟動。
首先在工作目錄建立docker-compose.yaml
檔案:
touch docker-compose.yaml
並在檔案內新增以下內容(tips:內容格式不要亂掉):
version: '2'
networks:
fabric-ca:
services:
ca-tls:
container_name: ca-tls
image: hyperledger/fabric-ca
command: sh -c 'fabric-ca-server start -d -b tls-ca-admin:tls-ca-adminpw --port 7052'
environment:
- FABRIC_CA_SERVER_HOME=/ca/tls
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_CSR_CN=ca-tls
- FABRIC_CA_SERVER_CSR_HOSTS=0.0.0.0
- FABRIC_CA_SERVER_DEBUG=true
volumes:
- $GOPATH/src/github.com/caDemo:/ca ##重要!!!記得修改這裡的路徑為自己的工作目錄
networks:
- fabric-ca
ports:
- 7052:7052
啟動該docker
容器:
docker-compose -f docker-compose.yaml up ca-tls
如果命令列出現以下內容則說明啟動成功:
[INFO] Listening on https://0.0.0.0:7052
同時工作目錄下會出現一個tls
的資料夾。資料夾中的內容暫先不解釋,留著在另一篇文章中說明。不過有一個檔案需要解釋一下,因為之後會用到。
在$GOPATH/src/github.com/caDemo/tls/
路徑下的ca-cert.pem
檔案。這是TLS CA
伺服器簽名的根證書,目的是用來對CA
的TLS
證書進行驗證,同時也需要持有這個證書才可以進行證書的頒發。在多機環境下,我們需要將它複製到每一臺機器上,不過本文采用的是單機環境,所以省略掉了這一步。
2.2 TLS CA伺服器註冊使用者
第一步是在TLS CA伺服器中註冊使用者,經過註冊的使用者才擁有TLS證書,本文中由於只在各節點之間進行TLS加密通訊,所以只將orderer
和peer
節點的身份註冊到TLS伺服器。
開啟一個新的終端輸入以下命令:
#設定環境變數指定根證書的路徑(如果工作目錄不同的話記得指定自己的工作目錄,以下不再重複說明)
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/tls/ca-cert.pem
#設定環境變數指定CA客戶端的HOME資料夾
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/caDemo/tls/admin
#登入管理員使用者用於之後的節點身份註冊
fabric-ca-client enroll -d -u https://tls-ca-admin:[email protected]:7052
登入成功在工作目錄下的tls
資料夾下將出現一個admin
資料夾,這裡面是admin
的相關證書檔案.
並且只有登入了admin
,才具有許可權進行使用者的註冊,因為該使用者具有CA的全部許可權,相當於CA伺服器的root
使用者。
接下來對各個節點進行註冊。
fabric-ca-client register -d --id.name peer1-org1 --id.secret peer1PW --id.type peer -u https://0.0.0.0:7052
fabric-ca-client register -d --id.name peer2-org1 --id.secret peer2PW --id.type peer -u https://0.0.0.0:7052
fabric-ca-client register -d --id.name peer1-org2 --id.secret peer1PW --id.type peer -u https://0.0.0.0:7052
fabric-ca-client register -d --id.name peer2-org2 --id.secret peer2PW --id.type peer -u https://0.0.0.0:7052
fabric-ca-client register -d --id.name orderer-org0 --id.secret ordererPW --id.type orderer -u https://0.0.0.0:7052
這裡將三個組織中的節點都進行了註冊。
- 不過
-d
這個引數並沒有找到相關資料 id.name
是指定使用者的名稱--id.secert
是指定密碼--id.type
是指定使用者型別,使用者型別預設為client
,主要包括peer
,app
,user
,orderer
.-u
則是指定請求CA伺服器的URL。
這裡我們為各個節點註冊TLS證書,之後Fabric網路的通訊則需要通過這一步驟註冊過的使用者的TLS證書來進行TLS加密通訊。
到這裡我們只是註冊了各個節點的身份,還沒有獲取到他們的證書。證書可以通過登入獲取,不過暫時不著急獲取他們的TLS證書。
接下來,我們對其他幾個CA伺服器進行配置。
2.3配置Org0的CA伺服器
再強調一下,本文中的幾個CA伺服器都是根伺服器,彼此之間沒有任何關係,所以上一步驟的TLS CA伺服器在這一部分並沒有用到。
同樣,本文使用Docker容器啟動CA伺服器。配置檔案如下,只需要新增進之前的docker-compose.yaml
檔案中就好:
org0:
container_name: org0
image: hyperledger/fabric-ca
command: /bin/bash -c 'fabric-ca-server start -d -b org0-admin:org0-adminpw --port 7053'
environment:
- FABRIC_CA_SERVER_HOME=/ca/org0/crypto
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_CSR_CN=org0
- FABRIC_CA_SERVER_CSR_HOSTS=0.0.0.0
- FABRIC_CA_SERVER_DEBUG=true
volumes:
- $GOPATH/src/github.com/caDemo:/ca
networks:
- fabric-ca
ports:
- 7053:7053
新增完之後啟動它:
docker-compose -f docker-compose.yaml up org0
開啟另一個終端,接下來註冊org0的使用者:
#首先指定環境變數,這裡的TLS證書不是之前的TLS CA伺服器的根證書,而是本組織CA伺服器啟動時生成的TLS根證書
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/org0/crypto/ca-cert.pem
#指定本組織的CA客戶端工作目錄
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/caDemo/org0/admin
登入org0
的CA伺服器管理員身份用於註冊本組織的使用者:
fabric-ca-client enroll -d -u https://org0-admin:[email protected]:7053
在本組織中共有兩個使用者:orderer
節點和admin
使用者(這裡的admin和管理員是不同的。)
將他們註冊到org0的CA伺服器:
fabric-ca-client register -d --id.name orderer-org0 --id.secret ordererpw --id.type orderer -u https://0.0.0.0:7053
fabric-ca-client register -d --id.name admin-org0 --id.secret org0adminpw --id.type admin --id.attrs "hf.Registrar.Roles=client,hf.Registrar.Attributes=*,hf.Revoker=true,hf.GenCRL=true,admin=true:ecert,abac.init=true:ecert" -u https://0.0.0.0:7053
命令執行完之後,將會註冊一個Orderer節點的身份和一個Admin的身份。同時在工作目錄下的org0
子資料夾中會有兩個資料夾:crypto
和admin
。crypto
中是CA伺服器的配置資訊,admin
是伺服器管理員的身份資訊。
2.4配置Org1的CA伺服器
同樣的步驟,對org1組織的CA伺服器進行配置:
org1:
container_name: org1
image: hyperledger/fabric-ca
command: /bin/bash -c 'fabric-ca-server start -d -b org1-admin:org1-adminpw'
environment:
- FABRIC_CA_SERVER_HOME=/ca/org1/crypto
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_CSR_CN=org1
- FABRIC_CA_SERVER_CSR_HOSTS=0.0.0.0
- FABRIC_CA_SERVER_DEBUG=true
volumes:
- $GOPATH/src/github.com/caDemo:/ca
networks:
- fabric-ca
ports:
- 7054:7054
啟動伺服器:
docker-compose -f docker-compose.yaml up org1
開啟新的終端,配置環境變數:
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/org1/crypto/ca-cert.pem
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/caDemo/org1/admin
登入CA伺服器管理員身份:
fabric-ca-client enroll -d -u https://org1-admin:[email protected]:7054
組織一種共有四個使用者:peer1
,peer2
,admin
,user
,分別註冊他們:
fabric-ca-client register -d --id.name peer1-org1 --id.secret peer1PW --id.type peer -u https://0.0.0.0:7054
fabric-ca-client register -d --id.name peer2-org1 --id.secret peer2PW --id.type peer -u https://0.0.0.0:7054
fabric-ca-client register -d --id.name admin-org1 --id.secret org1AdminPW --id.type user -u https://0.0.0.0:7054
fabric-ca-client register -d --id.name user-org1 --id.secret org1UserPW --id.type user -u https://0.0.0.0:7054
2.5配置Org2的CA伺服器
和上一部分相同,這裡只列舉需要的命令:
CA伺服器配置檔案:
org2:
container_name: org2
image: hyperledger/fabric-ca
command: /bin/bash -c 'fabric-ca-server start -d -b org2-admin:org2-adminpw --port 7055'
environment:
- FABRIC_CA_SERVER_HOME=/ca/org2/crypto
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_CSR_CN=org2
- FABRIC_CA_SERVER_CSR_HOSTS=0.0.0.0
- FABRIC_CA_SERVER_DEBUG=true
volumes:
- $GOPATH/src/github.com/caDemo:/ca
networks:
- fabric-ca
ports:
- 7055:7055
啟動伺服器:
docker-compose -f docker-compose.yaml up org2
開啟新的終端,配置環境變數:
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/org2/crypto/ca-cert.pem
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/caDemo/org2/admin
登入CA伺服器管理員身份:
fabric-ca-client enroll -d -u https://org2-admin:[email protected]:7055
組織一種共有四個使用者:peer1
,peer2
,admin
,user
,分別註冊他們:
fabric-ca-client register -d --id.name peer1-org2 --id.secret peer1PW --id.type peer -u https://0.0.0.0:7055
fabric-ca-client register -d --id.name peer2-org2 --id.secret peer2PW --id.type peer -u https://0.0.0.0:7055
fabric-ca-client register -d --id.name admin-org2 --id.secret org1AdminPW --id.type user -u https://0.0.0.0:7055
fabric-ca-client register -d --id.name user-org2 --id.secret org1UserPW --id.type user -u https://0.0.0.0:7055
3.生成證書並配置TLS
到目前為止,所有的使用者我們都註冊完畢,接下來就是為每一個使用者生成證書並配置TLS證書。
其中證書分為兩部分,分別是本組織的MSP證書,以及組織之間進行加密通訊的TLS證書。
所以本文需要對兩部分證書進行分別生成與配置。
從組織一開始:
3.1 組織一節點配置
3.1.1 peer1
首先是本組織的MSP
證書:
- 配置環境變數
#指定peer1節點的HOME目錄
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/caDemo/org1/peer1
#指定**本**組織的TLS根證書
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/org1/crypto/ca-cert.pem
- 登入
peer1
節點到org1 CA
伺服器上:
fabric-ca-client enroll -d -u https://peer1-org1:[email protected]:7054
這一步完成後,在$GOPATH/src/github.com/caDemo/org1/peer1
下會出現一個msp
資料夾,這是peer1
節點的MSP
證書。
接下來是TLS
證書:
- 配置環境變數
#指定TLS CA伺服器生成的TLS根證書
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/tls/ca-cert.pem
#指定TLS證書的HOME目錄
export FABRIC_CA_CLIENT_MSPDIR=$GOPATH/src/github.com/caDemo/org1/peer1/tls-msp
- 登入
peer1
節點到TLS CA
伺服器上:
fabric-ca-client enroll -d -u https://peer1-org1:[email protected]:7052 --enrollment.profile tls --csr.hosts peer1-org1
這一步完成後,在$GOPATH/src/github.com/caDemo/org1/peer1
下會出現一個tls-msp
資料夾,這是peer1
節點的TLS
證書。
- 修改祕鑰檔名
為什麼要修改呢,進入這個資料夾看一下就知道了,由伺服器生成的祕鑰檔名是一長串無規則的字串,後期我們使用的時候難道要一個字元一個字元地輸入?
cd $GOPATH/src/github.com/caDemo/org1/peer1/tls-msp/keystore/
mv *_sk key.pem
#修改完回到工作目錄
cd $GOPATH/src/github.com/caDemo
3.1.2 peer2
peer2
節點和上面步驟相同:
這裡就直接放需要的命令了:
- 生成
MSP
證書
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/caDemo/org1/peer2
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/org1/crypto/ca-cert.pem
fabric-ca-client enroll -d -u https://peer2-org1:[email protected]:7054
- 生成
TLS
證書
export FABRIC_CA_CLIENT_MSPDIR=$GOPATH/src/github.com/caDemo/org1/peer2/tls-msp
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/tls/ca-cert.pem
fabric-ca-client enroll -d -u https://peer2-org1:[email protected]:7052 --enrollment.profile tls --csr.hosts peer2-org1
cd $GOPATH/src/github.com/caDemo/org1/peer2/tls-msp/keystore/
mv *_sk key.pem
3.1.3 admin
接下來是admin
使用者,這個使用者有什麼作用呢,實際上,安裝和例項化鏈碼都需要admin
的證書,所以才需要註冊一個admin
使用者,還要它的證書。
- 配置環境變數
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/caDemo/org1/adminuser
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/org1/crypto/ca-cert.pem
#這裡多了一個環境變數,是指定admin使用者的msp證書資料夾的
export FABRIC_CA_CLIENT_MSPDIR=$GOPATH/src/github.com/caDemo/org1/adminuser/msp
- 登入
admin
使用者獲取MSP
證書:
fabric-ca-client enroll -d -u https://admin-org1:[email protected]:7054
因為我們生成這個使用者的證書主要就是為了之後鏈碼的安裝和例項化,所以配不配置他的TLS
證書也無關緊要了(關鍵是我們之前也沒有將這個使用者註冊到tls
伺服器中)
- 複製證書到
admincerts
資料夾:
去看Fabric官方的例子,每一個peer
節點的MSP
資料夾下都有admincerts
這個子資料夾的,而且是需要我們手動建立的。
mkdir -p $GOPATH/src/github.com/caDemo/org1/peer1/msp/admincerts
#將簽名證書拷貝過去
cp $GOPATH/src/github.com/caDemo/org1/adminuser/msp/signcerts/cert.pem $GOPATH/src/github.com/caDemo/org1/peer1/msp/admincerts/org1-admin-cert.pem
#回到工作目錄
cd $GOPATH/src/github.com/caDemo/
3.1.4 啟動peer節點
到這裡,已經配置好了一個節點,所以我們就可以啟動這個節點了,當然在之後和orderer
節點一起啟動也可以,不過忙活了這麼多,還是應該提前看到一下所做的工作的成果的!
附上peer1
節點的容器配置資訊:
peer1-org1:
container_name: peer1-org1
image: hyperledger/fabric-peer
environment:
- CORE_PEER_ID=peer1-org1
- CORE_PEER_ADDRESS=peer1-org1:7051
- CORE_PEER_LOCALMSPID=org1MSP
- CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org1/peer1/msp
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=cademo_fabric-ca
- FABRIC_LOGGING_SPEC=debug
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/tmp/hyperledger/org1/peer1/tls-msp/signcerts/cert.pem
- CORE_PEER_TLS_KEY_FILE=/tmp/hyperledger/org1/peer1/tls-msp/keystore/key.pem
- CORE_PEER_TLS_ROOTCERT_FILE=/tmp/hyperledger/org1/peer1/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1-org1:7051
- CORE_PEER_GOSSIP_SKIPHANDSHAKE=true
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/org1/peer1
volumes:
- /var/run:/host/var/run
- $GOPATH/src/github.com/caDemo/org1/peer1:/tmp/hyperledger/org1/peer1
networks:
- fabric-ca
啟動它!!
docker-compose -f docker-compose.yaml up peer1-org1
如果沒有報錯的話,說明之前配置的沒有什麼問題,如果出錯的話,則需要返回去檢查一下了。。。
peer2
節點的容器配置資訊:
peer2-org1:
container_name: peer2-org1
image: hyperledger/fabric-peer
environment:
- CORE_PEER_ID=peer2-org1
- CORE_PEER_ADDRESS=peer2-org1:8051
- CORE_PEER_LOCALMSPID=org1MSP
- CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org1/peer2/msp
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=cademo_fabric-ca
- FABRIC_LOGGING_SPEC=debug
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/tmp/hyperledger/org1/peer2/tls-msp/signcerts/cert.pem
- CORE_PEER_TLS_KEY_FILE=/tmp/hyperledger/org1/peer2/tls-msp/keystore/key.pem
- CORE_PEER_TLS_ROOTCERT_FILE=/tmp/hyperledger/org1/peer2/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1-org1:7051
- CORE_PEER_GOSSIP_SKIPHANDSHAKE=true
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/org1/peer2
volumes:
- /var/run:/host/var/run
- $GOPATH/src/github.com/caDemo/org1/peer2:/tmp/hyperledger/org1/peer2
networks:
- fabric-ca
啟動它!!
docker-compose -f docker-compose.yaml up peer2-org1
3.2 組織二節點配置
和之前一樣的步驟,所以沒什麼好解釋的了:
3.2.1 peer1
- 配置環境變數
#指定peer2節點的HOME目錄
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/caDemo/org2/peer1
#指定本組織的TLS根證書
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/org2/crypto/ca-cert.pem
- 登入
peer1
節點到org2 CA
伺服器上:
fabric-ca-client enroll -d -u https://peer1-org2:[email protected]:7055
接下來是TLS
證書:
- 配置環境變數
#指定TLS CA伺服器生成的TLS根證書
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/tls/ca-cert.pem
#指定TLS證書的HOME目錄
export FABRIC_CA_CLIENT_MSPDIR=$GOPATH/src/github.com/caDemo/org2/peer1/tls-msp
- 登入
peer1
節點到TLS CA
伺服器上:
fabric-ca-client enroll -d -u https://peer1-org2:[email protected]:7052 --enrollment.profile tls --csr.hosts peer1-org2
- 修改祕鑰檔名
cd $GOPATH/src/github.com/caDemo/org2/peer1/tls-msp/keystore/
mv *_sk key.pem
#修改完回到工作目錄
cd $GOPATH/src/github.com/caDemo
3.2.2 peer2
- 生成
MSP
證書
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/caDemo/org2/peer2
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/org2/crypto/ca-cert.pem
fabric-ca-client enroll -d -u https://peer2-org2:[email protected]:7055
- 生成
TLS
證書
export FABRIC_CA_CLIENT_MSPDIR=$GOPATH/src/github.com/caDemo/org2/peer2/tls-msp
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/tls/ca-cert.pem
fabric-ca-client enroll -d -u https://peer2-org2:[email protected]:7052 --enrollment.profile tls --csr.hosts peer2-org2
cd $GOPATH/src/github.com/caDemo/org2/peer2/tls-msp/keystore/
mv *_sk key.pem
3.2.3 admin
- 配置環境變數
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/caDemo/org2/adminuser
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/org2/crypto/ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=$GOPATH/src/github.com/caDemo/org2/adminuser/msp
- 登入
admin
使用者獲取MSP
證書:
fabric-ca-client enroll -d -u https://admin-org2:[email protected]:7055
- 複製證書到
admincerts
資料夾:
去看Fabric官方的例子,每一個peer
節點的MSP
資料夾下都有admincerts
這個子資料夾的,而且是需要我們手動建立的。
mkdir -p $GOPATH/src/github.com/caDemo/org2/peer1/msp/admincerts
#將簽名證書拷貝過去
cp $GOPATH/src/github.com/caDemo/org2/adminuser/msp/signcerts/cert.pem $GOPATH/src/github.com/caDemo/org2/peer1/msp/admincerts/org2-admin-cert.pem
#回到工作目錄
cd $GOPATH/src/github.com/caDemo/
3.2.4 啟動peer節點
附上peer1
節點的容器配置資訊:
peer1-org2:
container_name: peer1-org2
image: hyperledger/fabric-peer
environment:
- CORE_PEER_ID=peer1-org2
- CORE_PEER_ADDRESS=peer1-org2:9051
- CORE_PEER_LOCALMSPID=org2MSP
- CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org2/peer1/msp
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=cademo_fabric-ca
- FABRIC_LOGGING_SPEC=debug
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/tmp/hyperledger/org2/peer1/tls-msp/signcerts/cert.pem
- CORE_PEER_TLS_KEY_FILE=/tmp/hyperledger/org2/peer1/tls-msp/keystore/key.pem
- CORE_PEER_TLS_ROOTCERT_FILE=/tmp/hyperledger/org2/peer1/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1-org2:9051
- CORE_PEER_GOSSIP_SKIPHANDSHAKE=true
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/org2/peer1
volumes:
- /var/run:/host/var/run
- $GOPATH/src/github.com/caDemo/org2/peer1:/tmp/hyperledger/org2/peer1
networks:
- fabric-ca
啟動它.
docker-compose -f docker-compose.yaml up peer1-org2
peer2
節點的容器配置資訊:
peer2-org2:
container_name: peer2-org2
image: hyperledger/fabric-peer
environment:
- CORE_PEER_ID=peer2-org2
- CORE_PEER_ADDRESS=peer2-org2:10051
- CORE_PEER_LOCALMSPID=org2MSP
- CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org2/peer2/msp
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=cademo_fabric-ca
- FABRIC_LOGGING_SPEC=debug
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/tmp/hyperledger/org2/peer2/tls-msp/signcerts/cert.pem
- CORE_PEER_TLS_KEY_FILE=/tmp/hyperledger/org2/peer2/tls-msp/keystore/key.pem
- CORE_PEER_TLS_ROOTCERT_FILE=/tmp/hyperledger/org2/peer2/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1-org2:9051
- CORE_PEER_GOSSIP_SKIPHANDSHAKE=true
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/org2/peer2
volumes:
- /var/run:/host/var/run
- $GOPATH/src/github.com/caDemo/org2/peer2:/tmp/hyperledger/org2/peer2
networks:
- fabric-ca
啟動它.
docker-compose -f docker-compose.yaml up peer2-org2
3.3 排序節點配置
接下來是排序節點的配置,為什麼放在最後面呢,因為排序節點的啟動需要提前生成創世區塊,而創世區塊的生成涉及到另一個配置檔案,所以就先配置簡單的peer
節點。
3.3.1 orderer
- 配置環境變數
#指定order節點的HOME目錄
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/caDemo/org0/orderer
#指定本組織的TLS根證書
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/org0/crypto/ca-cert.pem
- 登入
order
節點到org0 CA
伺服器上:
fabric-ca-client enroll -d -u https://orderer-org0:[email protected]:7053
接下來是TLS
證書:
- 配置環境變數
#指定TLS CA伺服器生成的TLS根證書
export FABRIC_CA_CLIENT_MSPDIR=$GOPATH/src/github.com/caDemo/org0/orderer/tls-msp
#指定TLS根證書
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/tls/ca-cert.pem
- 登入
orderer
節點到TLS CA
伺服器上:
fabric-ca-client enroll -d -u https://orderer-org0:[email protected]:7052 --enrollment.profile tls --csr.hosts orderer-org0
- 修改祕鑰檔名
cd $GOPATH/src/github.com/caDemo/org0/orderer/tls-msp/keystore/
mv *_sk key.pem
#修改完回到工作目錄
cd $GOPATH/src/github.com/caDemo
3.3.2 admin
- 配置環境變數
export FABRIC_CA_CLIENT_HOME=$GOPATH/src/github.com/caDemo/org0/adminuser
export FABRIC_CA_CLIENT_TLS_CERTFILES=$GOPATH/src/github.com/caDemo/org0/crypto/ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=$GOPATH/src/github.com/caDemo/org0/adminuser/msp
- 登入
admin
使用者獲取MSP
證書:
fabric-ca-client enroll -d -u https://admin-org0:[email protected]:7053
- 複製證書到
admincerts
資料夾:
mkdir $GOPATH/src/github.com/caDemo/org0/orderer/msp/admincerts
#將簽名證書拷貝過去
cp $GOPATH/src/github.com/caDemo/org0/adminuser/msp/signcerts/cert.pem $GOPATH/src/github.com/caDemo/org0/orderer/msp/admincerts/orderer-admin-cert.pem
#回到工作目錄
cd $GOPATH/src/github.com/caDemo/
4.Fabric網路配置
接下來到重頭戲了,證書都生成好了,即將要啟動網路了。不過在啟動網路之前還是有很多準備工作需要做。其實到這裡,官方文件已經好多沒有交代清楚的了,所以一下好多內容都是筆者自己摸索出來的,如有錯誤歡迎批評指正。
4.1 configtx.yaml檔案配置
在下一個步驟的生成創世區塊和通道配置資訊需要一個檔案:configtx.yaml
檔案。筆者根據官方的例子按照本文內容修改了一下,直接放在工作目錄:
展開檢視
Organizations: - &orderer-org0 Name: orderer-org0 ID: org0MSP MSPDir: ./org0/msp # Policies: # Readers: # Type: Signature # Rule: "OR('orderer-org0MSP.member')" # Writers: # Type: Signature # Rule: "OR('orderer-org0MSP.member')" # Admins: # Type: Signature # Rule: "OR('orderer-org0MSP.admin')" - &org1 Name: org1MSP ID: org1MSP MSPDir: ./org1/msp # Policies: # Readers: # Type: Signature # Rule: "OR('org1MSP.admin', 'org1MSP.peer', 'org1MSP.client')" # Writers: # Type: Signature # Rule: "OR('org1MSP.admin', 'org1MSP.client')" # Admins: # Type: Signature # Rule: "OR('org1MSP.admin')" AnchorPeers: - Host: peer1-org1 Port: 7051 - &org2 Name: org2MSP ID: org2MSP MSPDir: ./org2/msp # Policies: # Readers: # Type: Signature # Rule: "OR('org2MSP.admin', 'org2MSP.peer', 'org2MSP.client')" # Writers: # Type: Signature # Rule: "OR('org2MSP.admin', 'org2MSP.client')" # Admins: # Type: Signature # Rule: "OR('org2MSP.admin')" AnchorPeers: - Host: peer1-org2 Port: 9051 Capabilities: Channel: &ChannelCapabilities V1_4_3: true V1_3: false V1_1: false Orderer: &OrdererCapabilities V1_4_2: true V1_1: false Application: &ApplicationCapabilities V1_4_2: true V1_3: false V1_2: false V1_1: false Application: &ApplicationDefaults Organizations: # Policies: # Readers: # Type: ImplicitMeta # Rule: "ANY Readers" # Writers: # Type: ImplicitMeta # Rule: "ANY Writers" # Admins: # Type: ImplicitMeta # Rule: "MAJORITY Admins" Capabilities: <<: *ApplicationCapabilities Orderer: &OrdererDefaults OrdererType: solo Addresses: - orderer-org0:7050 BatchTimeout: 2s BatchSize: MaxMessageCount: 10 AbsoluteMaxBytes: 99 MB PreferredMaxBytes: 512 KB Organizations: # Policies: # Readers: # Type: ImplicitMeta # Rule: "ANY Readers" # Writers: # Type: ImplicitMeta # Rule: "ANY Writers" # Admins: # Type: ImplicitMeta # Rule: "MAJORITY Admins" # # BlockValidation specifies what signatures must be included in the block # # from the orderer for the peer to validate it. # BlockValidation: # Type: ImplicitMeta # Rule: "ANY Writers" Channel: &ChannelDefaults # Policies: # # Who may invoke the 'Deliver' API # Readers: # Type: ImplicitMeta # Rule: "ANY Readers" # # Who may invoke the 'Broadcast' API # Writers: # Type: ImplicitMeta # Rule: "ANY Writers" # # By default, who may modify elements at this config level # Admins: # Type: ImplicitMeta # Rule: "MAJORITY Admins" Capabilities: <<: *ChannelCapabilities Profiles: TwoOrgsOrdererGenesis: <<: *ChannelDefaults Orderer: <<: *OrdererDefaults Organizations: - *orderer-org0 Capabilities: <<: *OrdererCapabilities Consortiums: SampleConsortium: Organizations: - *org1 - *org2 TwoOrgsChannel: Consortium: SampleConsortium <<: *ChannelDefaults Application: <<: *ApplicationDefaults Organizations: - *org1 - *org2 Capabilities: <<: *ApplicationCapabilities
註釋掉的部分是策略部分,筆者還沒有完全搞懂,所以索性就先註釋掉了,以後搞懂了再新增進去。
還有一部分msp
需要配置,就是configtx.yaml
檔案中第一部分指定的MSPDir
,很簡單,按照一下命令複製一下就好了:
#進入工作目錄
cd $GOPATH/src/github.com/caDemo
############################################
#org0
mkdir org0/msp && cd org0/msp
mkdir admincerts && mkdir cacerts && mkdir tlscacerts
cd $GOPATH/src/github.com/caDemo
cp adminuser/msp/signcerts/cert.pem msp/admincerts/ca-cert.pem
cp crypto/ca-cert.pem msp/cacerts/ca-cert.pem
cp ../tls/ca-cert.pem msp/tlscacerts/ca-cert.pem
############################################
#org1
cd $GOPATH/src/github.com/caDemo
mkdir org1/msp/ && cd org1/msp/
mkdir admincerts && mkdir cacerts && mkdir tlscacerts
cd $GOPATH/src/github.com/caDemo
cp adminuser/msp/signcerts/cert.pem msp/admincerts/ca-cert.pem
cp crypto/ca-cert.pem msp/cacerts/ca-cert.pem
cp ../tls/ca-cert.pem msp/tlscacerts/ca-cert.pem
############################################
#org2
cd $GOPATH/src/github.com/caDemo
mkdir org1/msp/ && cd org1/msp/
mkdir admincerts && mkdir cacerts && mkdir tlscacerts
cd $GOPATH/src/github.com/caDemo
cp adminuser/msp/signcerts/cert.pem msp/admincerts/ca-cert.pem
cp crypto/ca-cert.pem msp/cacerts/ca-cert.pem
cp ../tls/ca-cert.pem msp/tlscacerts/ca-cert.pem
4.2 生成創世區塊和通道配置資訊
可以了,所有的前期工作都已經完成,接下來就是手動啟動網路了,第一步,生成創世區塊和通道配置資訊:
cd $GOPATH/src/github.com/caDemo
export FABRIC_CFG_PATH=$PWD
#生成創世區塊
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock $GOPATH/src/github.com/caDemo/genesis.block
#生成通道配置資訊
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx $GOPATH/src/github.com/caDemo/channel.tx -channelID mychannel
4.3 啟動Orderer節點
orderer
容器配置檔案:
orderer-org0:
container_name: orderer-org0
image: hyperledger/fabric-orderer
environment:
- ORDERER_HOME=/tmp/hyperledger/orderer
- ORDERER_HOST=orderer-org0
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
- ORDERER_GENERAL_GENESISMETHOD=file
- ORDERER_GENERAL_GENESISFILE=/tmp/hyperledger/genesis.block
- ORDERER_GENERAL_LOCALMSPID=org0MSP
- ORDERER_GENERAL_LOCALMSPDIR=/tmp/hyperledger/org0/orderer/msp
- ORDERER_GENERAL_TLS_ENABLED=true
- ORDERER_GENERAL_TLS_CERTIFICATE=/tmp/hyperledger/org0/orderer/tls-msp/signcerts/cert.pem
- ORDERER_GENERAL_TLS_PRIVATEKEY=/tmp/hyperledger/org0/orderer/tls-msp/keystore/key.pem
- ORDERER_GENERAL_TLS_ROOTCAS=[/tmp/hyperledger/org0/orderer/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem]
- ORDERER_GENERAL_LOGLEVEL=debug
- ORDERER_DEBUG_BROADCASTTRACEDIR=data/logs
volumes:
- $GOPATH/src/github.com/caDemo/org0/orderer:/tmp/hyperledger/org0/orderer/
- $GOPATH/src/github.com/caDemo:/tmp/hyperledger/
networks:
- fabric-ca
關鍵部分到了,只要這一步沒有出現錯誤,整個網路就啟動成功了。
docker-compose -f docker-compose.yaml up orderer-org0
4.4 啟動組織一的cli容器
cli
容器內容,我們需要這個容器對組織1進行鏈碼的互動:
cli-org1:
container_name: cli-org1
image: hyperledger/fabric-tools
tty: true
stdin_open: true
environment:
- SYS_CHANNEL=testchainid
- GOPATH=/opt/gopath
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- FABRIC_LOGGING_SPEC=DEBUG
- CORE_PEER_ID=cli-org1
- CORE_PEER_ADDRESS=peer1-org1:7051
- CORE_PEER_LOCALMSPID=org1MSP
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_ROOTCERT_FILE=/tmp/hyperledger/org1/peer1/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem
- CORE_PEER_TLS_CERT_FILE=/tmp/hyperledger/org1/peer1/tls-msp/signcerts/cert.pem
- CORE_PEER_TLS_KEY_FILE=/tmp/hyperledger/org1/peer1/tls-msp/keystore/key.pem
- CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org1/peer1/msp
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/org1
command: /bin/bash
volumes:
- $GOPATH/src/github.com/caDemo/org1/peer1:/tmp/hyperledger/org1/peer1
- $GOPATH/src/github.com/caDemo/org1/peer1/assets/chaincode:/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode
- $GOPATH/src/github.com/caDemo/org1/adminuser:/tmp/hyperledger/org1/adminuser
- $GOPATH/src/github.com/caDemo:/tmp/hyperledger/
networks:
- fabric-ca
depends_on:
- peer1-org1
啟動該容器:
docker-compose -f docker-compose.yaml up cli-org1
4.5 啟動組織二的cli容器
cli
容器內容,我們需要這個容器對組織2進行鏈碼的互動:
cli-org2:
container_name: cli-org2
image: hyperledger/fabric-tools
tty: true
stdin_open: true
environment:
- SYS_CHANNEL=testchainid
- GOPATH=/opt/gopath
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- FABRIC_LOGGING_SPEC=DEBUG
- CORE_PEER_ID=cli-org2
- CORE_PEER_ADDRESS=peer1-org2:9051
- CORE_PEER_LOCALMSPID=org2MSP
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_ROOTCERT_FILE=/tmp/hyperledger/org2/peer1/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem
- CORE_PEER_TLS_CERT_FILE=/tmp/hyperledger/org2/peer1/tls-msp/signcerts/cert.pem
- CORE_PEER_TLS_KEY_FILE=/tmp/hyperledger/org2/peer1/tls-msp/keystore/key.pem
- CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org2/peer1/msp
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/org2
command: /bin/bash
volumes:
- $GOPATH/src/github.com/caDemo/org2/peer1:/tmp/hyperledger/org2/peer1
- $GOPATH/src/github.com/caDemo/org2/peer1/assets/chaincode:/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode
- $GOPATH/src/github.com/caDemo/org2/adminuser:/tmp/hyperledger/org2/adminuser
- $GOPATH/src/github.com/caDemo:/tmp/hyperledger/
networks:
- fabric-ca
depends_on:
- peer1-org2
啟動該容器:
docker-compose -f docker-compose.yaml up cli-org2
5.網路測試
所有工作準備完成,接下來讓我們測試整個網路能不能正常執行吧:
5.1 建立與加入通道
以組織1為例:
- 首先進入
cli
容器:
docker exec -it cli bash
#配置環境變數
export CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org1/adminuser/msp
- 建立通道
peer channel create -c mychannel -f /tmp/hyperledger/channel.tx -o orderer-org0:7050 --outputBlock /tmp/hyperledger/mychannel.block --tls --cafile /tmp/hyperledger/org1/peer1/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem
- 將
peer1-org1
加入通道:
export CORE_PEER_ADDRESS=peer1-org1:7051
peer channel join -b /tmp/hyperledger/mychannel.block
- 將
peer2-org1
加入通道:
export CORE_PEER_ADDRESS=peer2-org1:8051
peer channel join -b /tmp/hyperledger/mychannel.block
組織二步驟是相同的,唯一不同的就是不需要建立通道了,所以就不再說明了。
5.2 安裝和例項化鏈碼
以組織1為例:
- 首先進入
cli
容器:
docker exec -it cli bash
#配置環境變數
export CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org1/adminuser/msp
export CORE_PEER_ADDRESS=peer1-org1:7051
- 安裝鏈碼
記得提前將鏈碼放到$GOPATH/src/github.com/caDemo/org1/peer1/assets/chaincode
路徑下。,本文使用的是fabric-samples/chaincode/chaincode_example02
官方示例鏈碼。
peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric-samples/chaincode/chaincode_example02/go/
- 例項化鏈碼
peer chaincode instantiate -C mychannel -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -o orderer-org0:7050 --tls --cafile /tmp/hyperledger/org1/peer1/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem
- 這一步在高版本的Fabric網路是會出錯的,因為少了一個檔案
config.yaml
:
NodeOUs:
Enable: true
ClientOUIdentifier:
Certificate: cacerts/ca.example.com-cert.pem #這裡需要修改
OrganizationalUnitIdentifier: client
PeerOUIdentifier:
Certificate: cacerts/ca.example.com-cert.pem #這裡需要修改
OrganizationalUnitIdentifier: peer
AdminOUIdentifier:
Certificate: cacerts/ca.example.com-cert.pem #這裡需要修改
OrganizationalUnitIdentifier: admin
OrdererOUIdentifier:
Certificate: cacerts/ca.example.com-cert.pem #這裡需要修改
OrganizationalUnitIdentifier: orderer
因為高版本的Fabric把節點型別區分開了,所以需要我們手動配置。
將該檔案複製到$GOPATH/src/github.com/caDemo/org1/adminuser/msp
資料夾內,同時修改上面指定的位置的檔名(與對應資料夾內的檔名對應就好了)。
- 例項化部分出錯的可能性是最高的,很多都是因為網路模式指定錯誤導致鏈碼容器啟動失敗,解決方案:
#終端執行命令
docker network ls
找到以fabric-ca
為字尾的一條如cademo_fabric-ca
,修改之前的所有peer
節點容器配置檔案的環境變數:
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=cademo_fabric-ca
修改完成重啟節點容器,再次執行以上的命令(需要重新配置環境變數,加入通道這兩個操作)。
終於,例項化成功了。
5.3 呼叫和查詢鏈碼
最後測試一下鏈碼功能能不能正常使用了:
- 還是組織一的
cli
容器:
docker exec -it cli bash
export CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org1/adminuser/msp
export CORE_PEER_ADDRESS=peer1-org1:7051
- 執行查詢功能:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
命令列應該打印出:
100
- 執行呼叫功能:
peer chaincode invoke -C mychannel -n mycc -c '{"Args":["invoke","a","b","10"]}' --tls --cafile /tmp/hyperledger/org2/peer1/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem
- 再次查詢:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
命令列應該打印出:
90
至於其他節點操作方法也是一樣的,就不再操作了。
到此為止,從零開始的手動生成證書一直到成功搭建Fabric網路全部步驟已經完成!!接下來還有更新錨節點等等就不再演示了,請各位讀者自行操作。整個步驟是不容易的,而且BUG百出,不過成功搭建完成確實漲了不少知識。
碼字不易,還望各位看官支援一下:
相關推薦
Hyperledger Fabric手動生成CA證書搭建Fabric網路
之前介紹了使用官方指令碼自動化啟動一個Fabric網路,並且所有的證書都是通過官方的命令列工具cryptogen直接生成網路中的所有節點的證書。在開發環境可以這麼簡單進行,但是生成環境下還是需要我們自定義對網路中的節點的證書進行配置。 所以在本文中,將會詳細介紹一個從手動生成證書一直到啟動網路的整體步驟。本文
CentOS7 - Hyperledger Fabric1.1多機部署中切換預設生成的證書為Fabric-CA
根據蒐集的資料安裝測試並在安裝測試過程中整理的文件,如有不足希望不吝賜教。 目錄 一、前提 二、安裝部署Fabric-CA 1.下載安裝 2.部署 三。生成證書 1.生成fabric-ca admin證書 2建立聯盟. 3.為每個組織準備msp
jdk生成CA證書
知識庫 tor 證書頒發 r文件 防範 簽名 keystore rfc 輸入 前言: JKS文件是一個Java中的密鑰管理庫。 JKS文件就好像一個倉庫,裏面可以放很多的東西,這裏只存放一類東西就是密鑰,倉庫當然會有一把鎖,防範別人隨便亂拿,這個就是JKS文件的密碼。裏面存
手動製作CA證書
一、安裝 CFSSL #下面三個安裝包,無需下載,之前百度雲中的壓縮包中都有[[email protected] ~]# cd /usr/local/src [[email protected]-node1 src]# wget https://pkg.cfssl.org/R1
nginx反向代理cas-server之2:生成證書,centOS下使用openssl生成CA證書(根證書、server證書、client證書)
前些天搭好了cas系統,這幾天一致再搞nginx和cas的反向代理,一直不成功,但是走http還是測試通過的,最終確定是ssl認證證書這一塊的問題,原本我在cas服務端裡的tomcat已經配置了證書,並且能夠使用了,但是現在我用nginx代理使用ssl與cas-server
win64使用openssl生成ca證書
一、準備工作: 先安裝Visual C++ 2008Redistributables (x64),然後安裝Win64 OpenSSL v1.0.1j。這裡我安裝到D:\OpenSSL-Win6
openssl生成ca證書,以及過程中遇到的問題總結
相關說明:轉載於:http://www.cnblogs.com/yangyquin/p/5284530.html在原有的基礎上總結了一些本人安裝過程中的一些問題參考資料:http://blog.sina.com.cn/s/blog_7ea5cb4d0100xfce.html
Apache OpenSSL生成CA證書使用
最近在學習SSL協議,這次是基於Apache伺服器自帶的openssl來實現的TLS:傳輸層安全協議SSL:安全套接字層KEY:私鑰CSR:證書籤名請求,即公鑰,生成證書時需要將此提交給證書機構,生成 X509 數字證書前,一般先由使用者提交證書申請檔案,然後由 CA 來簽發
信安實踐——自建CA證書搭建https伺服器
1.理論知識https簡介HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。超文字傳輸協
自建CA證書搭建https伺服器
由於CA收費,所以可以自建CA,通過將CA匯入瀏覽器實現https的效果,曾經12306購票就需要自行匯入網站證書。 關於https 2015年阿里巴巴將旗下淘寶、天貓(包括移動客戶端)全站啟用HTTPS加密,並順利通過“雙十一”考驗,成為全球最大的電商平臺全站HTTPS改造案例。 全站HTTPS需要解決3大
ChainDesk|搭建Fabric網路:生成組織結構與身份證書
作者:ChainDesk韓小東,ChainDesk區塊鏈行業分析師, ChainDesk區塊鏈工程師 本篇文章閱讀時間:3分鐘 目標 明確生成組織結構及身份證書所需的配置檔案及其內容含義 如何使用命令生成對應的組織結構信身份證書
Hyperledger Fabric 手動搭建【區塊鏈學習三】
#Hyperledger Fabric 手動搭建 >前面我們學習了[區塊鏈是什麼](https://www.cnblogs.com/chenxi001/p/13496269.html)、還有[自動搭建](https://www.cnblogs.com/chenxi001/p/13472111.html)學習東
區塊鏈之Hyperledger(超級賬本)Fabric v1.0 的環境搭建(更新)
mirror linu stat iyu wget glob 保存 url oba 參考鏈接:https://blog.csdn.net/so5418418/article/details/78355868 https://blog.csdn.net/wgh101539
區塊鏈 Hyperledger Fabric v1.0.0 環境搭建
前言:最近專案涉及到超級賬本,在有些理論知識的基礎上,需要整一套環境來。 這是一個特別要注意的事情,筆者之前按照網路上推薦,大部分都是推薦ubuntu系統的,於是下載Ubuntu系統(16.04.5和18.04都試試),遇到各種問題,一直不能成功,大概花了好多天,一直不成功,後來都要放棄了,
ChainDesk第1章 Hyperledger Fabric的認知與環境搭建-邁出第一步
作者:ChainDesk韓小東,ChainDesk區塊鏈行業分析師, ChainDesk區塊鏈工程師 ChainDesk官網:http://www.chaindesk.cn/?20181211xinlangmeiti 本篇文章閱讀時間:2.3分鐘
Hyperledger Explorer 區塊鏈瀏覽器與已搭建fabric網路結合
折騰了一下午,終於吧Hyperledger Explorer與現有的fabric網路結合起來。其實也挺簡單,主要是踩了許可權的坑。 Hyperledger Explorer介紹 hyperledger explorer主要是為Hyperledger的區塊鏈網路搭建視覺化的環境,可以通
Hyperledger fabric 1.1環境的搭建實操
一、環境整理這一步並非必須,但鑑於docker容器的實際情況,理論上linux核心需要在3.10及以上。有朋友在3.10上跑通過,具體是什麼核心版本沒詳細去確認,為了順利起見,請首先升級linux核心到4.x(最後不成功才要升,新測3.10可跑,linuux要2G記憶體以上)1、CentOS升核心檢視Cent
區塊鏈之Hyperledger(超級賬本)Fabric v1.0 的環境搭建(超詳細教程)
首先感謝深藍居,這篇教程是基於他的教程[http://www.cnblogs.com/studyzy/p/7437157.html]整理的,區塊鏈技術發展很快,在大神的教程上稍做了些補充。另外,有也在學習區塊鏈的同學可以聯絡我,大家互相學習! 在剛開始接觸Hy
手動安裝K8s 1.10 第二節:基礎環境+CA證書
docekr kubernetes 容器 1、安裝Dockeryum install docker-ce -y 2、準備相關軟件上傳k8s-v1.10.1-manual.zip到/usr/local/src[root@k8smaster src]# lltotal 1178908-rw-r--r-
kubernetes V1.10.4 集群部署 (手動生成證書)
nbsp namespace owin 服務器初始 row lse uber air sam 說明:本文檔涉及docker鏡像,yaml文件下載地址鏈接:https://pan.baidu.com/s/1QuVelCG43_VbHiOs04R3-Q 密碼:70q2本文只是作