02-cryptogen的帳號管理體系

Hyperledger Fabric提供了一個用開生成相關(guān)證書的模塊不狮,叫做cryptogen姜钳。這個工具會根據(jù)用戶指定的配置文件生成相關(guān)的證書

在使用cryptogen生成證書之前柳骄,我們首先要了解Fabric的架構(gòu)和管理邏輯饲帅。從高層次來說,F(xiàn)abric的參與者被稱為組織Org耍休,所有組織會共同維護(hù)一個用來排序節(jié)點(diǎn)的集群稱為orderer,各個組織內(nèi)部會維護(hù)若干臺peer節(jié)點(diǎn)货矮,用于接受客戶端請求和記賬羊精。
除此之外,每類節(jié)點(diǎn)都可以包含若干用戶囚玫,必須有一個Admin用戶喧锦,每個節(jié)點(diǎn)和用戶

在通信時,節(jié)點(diǎn)之間可以設(shè)置通過TLS加密抓督,這就需要TLS的證書燃少,因此Fabric的證書分為兩類MSP和TLS。

Orderer類型
  -  聯(lián)盟(這里稱為聯(lián)盟是因?yàn)镺rderer由多個組織合作共同維護(hù)的排序節(jié)點(diǎn)集群铃在,便于理解)

Peer類型
  -  組織1
  -  組織2
  -  組織3
    -  peer節(jié)點(diǎn)
      -  peer0節(jié)點(diǎn)
      -  peer1節(jié)點(diǎn)
          - msp 
          - tls
    -  用戶
      -  Admin
      -  User1
          - msp 
          - tls

生成證書

配置文件

cryptogen提供了下面的命令阵具,用來生成配置模板

cryptogen showtemplate

修改配置文件為下面的內(nèi)容,其中指定了Order類型的聯(lián)盟名稱jianshu.com定铜,Peer類型指定了有兩個組織阳液,分別為org1.jianshu.comorg2.jianshu.com,兩個組織分別有2個peer節(jié)點(diǎn)和3/2個用戶。

OrdererOrgs:
    - Name: Orderer
      Domain: jianshu.com
      Specs:
            - Hostname: orderer
      Template:
            Count: 2
PeerOrgs:
    - Name: Org1
      Domain: org1.jianshu.com
      Template:
            Count: 2
      Users:
            Count: 3
    - Name: Org2
      Domain: org2.jianshu.com
      Template:
          Count: 2
      Users:
          Count: 2

生成證書

使用下面的命令可以根據(jù)配置文件生成證書文件

cryptogen generate --config=crypto-config.yaml --output ./crypto-config

證書結(jié)構(gòu)

進(jìn)入crypto-config文件夾宿稀,使用tree -L 2可以查看目錄的結(jié)構(gòu)

├── ordererOrganizations
│   └── jianshu.com
│       ├── ca
│       ├── msp
│       ├── orderers
│       ├── tlsca
│       └── users
└── peerOrganizations
    ├── org1.jianshu.com
    │   ├── ca
    │   ├── msp
    │   ├── peers
    │   ├── tlsca
    │   └── users
    └── org2.jianshu.com
        ├── ca
        ├── msp
        ├── peers
        ├── tlsca
        └── users

從上面的結(jié)構(gòu)來說趁舀,內(nèi)部主要根據(jù)節(jié)點(diǎn)類型來劃分,Orderer類型保護(hù)一個聯(lián)盟祝沸,Peer類型有兩個組織矮烹。

證書詳解

由于Orderer類型的聯(lián)盟和Peer類型的組織內(nèi)的證書結(jié)構(gòu)是一樣的,我們org1.jianshu.com為例罩锐,了解其內(nèi)部的結(jié)構(gòu)奉狈。首先,使用tree命令打印出這個文件夾下的內(nèi)容涩惑,-L后面的數(shù)字可以調(diào)整層次仁期。

├── org1.jianshu.com
│   ├── ca
│   │   ├── ca.org1.jianshu.com-cert.pem
│   │   └── 965e1493f4_sk
│   ├── tlsca
│   │   ├── 2312a9c0380eb48d343_sk
│   │   └── tlsca.org1.jianshu.com-cert.pem
│   ├── msp
│   │   ├── admincerts
│   │   ├── cacerts
│   │   └── tlscacerts
│   ├── peers
│   │   ├── peer0.org1.jianshu.com
│   │   └── peer1.org1.jianshu.com
│   └── users
│       ├── Admin@org1.jianshu.com
│       ├── User1@org1.jianshu.com
│       ├── User2@org1.jianshu.com
│       └── User3@org1.jianshu.com
  • 對于一個組織來說,其有兩類根證書,一類是用戶根證書跛蛋,一類是用來TLS通信的根證書熬的,分別在catlsca文件夾內(nèi)部。
  • msp文件夾是組織的身份文件赊级,內(nèi)部包含了Admin證書admincerts押框,組織根證書cacerts和tls的根證書tlscacerts
  • peers中包含了組織org1.jianshu.com各個peer節(jié)點(diǎn)的相關(guān)認(rèn)證文件
  • users中包含了組織org2.jianshu.com各個用戶的相關(guān)認(rèn)證文件

ca和tlsca

下面我們以ca為例,驗(yàn)證一下根證書理逊。ca內(nèi)部以_sk結(jié)尾的是組織org1.jianshu.com的私鑰橡伞,pem是組織org1.jianshu.com的自簽名根證書。

查看根證書信息

openssl x509 -in root.crt -text | less

驗(yàn)證證書與私鑰匹配

下面是一個驗(yàn)證腳本晋被,參數(shù)1是證書兑徘,參數(shù)2是私鑰,保存為certcheck.sh羡洛,修改權(quán)限后可以執(zhí)行

#!/bin/bash
if [[ "$1" = "" || "$2" = "" ]]; then
    echo "certCheck.sh  certfile keyfile"  
    exit 0;
else
    #certModuleMd5=`openssl x509 -noout -modulus -in $1 | openssl md5`
    #privateModuleMd5=`openssl rsa -noout -modulus -in $2 | openssl md5`


        #if [  "$certModuleMd5" = "$privateModuleMd5" ] ; then
        #        echo "ok"
    #else
    #   echo "not ok"
        #fi
        value=`openssl x509 -text -noout -in $1  | grep "Public Key Algorithm:" | awk  -F ':'  'BEGIN {}  {print $2} END {}'`

        if [ "$value" = " rsaEncryption" ] ; then
                echo $value

                requestModuleMd5=`openssl x509 -modulus -in $1 | grep Modulus | openssl md5`
                privateModuleMd5=`openssl rsa -noout -modulus -in $2 | openssl md5`

        else
                `openssl ec -in $2 -pubout -out ecpubkey.pem `
                privateModuleMd5=`cat ecpubkey.pem | openssl md5`
                requestModuleMd5=`openssl x509 -in $1  -pubkey  -noout | openssl md5`

        fi
        if [  "$requestModuleMd5" = "$privateModuleMd5" ] ; then
                echo "ok"
        fi


fi

執(zhí)行下面命令挂脑,輸出ok說明私鑰和證書是匹配的

./certcheck.sh peerOrganizations/org1.jianshu.com/ca/ca.org1.jianshu.com-cert.pem peerOrganizations/org1.jianshu.com/ca/fab24049c802a9bfcd056753c1175fe369f728c531315f106aeb11965e1493f4_sk 
read EC key
writing EC key
ok

msp文件夾

msp文件夾中分別保存了組織org1.jianshu.com的相關(guān)根證書

├── msp
│   ├── admincerts   [Admin用戶的證書]
│   │   └── Admin@org1.jianshu.com-cert.pem
│   ├── cacerts   [ca的根證書]
│   │   └── ca.org1.jianshu.com-cert.pem
│   └── tlscacerts   [tlsca的根證書]
│       └── tlsca.org1.jianshu.com-cert.pem

ca.org1.jianshu.com-cert.pem與tlsca.org1.jianshu.com-cert.pem分別與catlsca下的同名文件內(nèi)容一樣, 可以通過md5sum命令查看翘县。

# ca下
md5sum ca/ca.org1.jianshu.com-cert.pem 
00067a1e3e1ec302e7c3e66433bc73ed  ca/ca.org1.jianshu.com-cert.pem
# msp/cacerts下
md5sum msp/cacerts/ca.org1.jianshu.com-cert.pem 
00067a1e3e1ec302e7c3e66433bc73ed  msp/cacerts/ca.org1.jianshu.com-cert.pem

至于admincerts的Admin@org1.jianshu.com-cert.pem文件也是Admin用戶的證書最域,與Admin@org1.jianshu.com里面的證書一樣。

peers文件夾

peers文件夾內(nèi)有兩個peer節(jié)點(diǎn)锈麸,分別是peer0.org1.jianshu.compeer1.org1.jianshu.com,先以peer0為例說內(nèi)部的結(jié)構(gòu)

├── peer0.org1.jianshu.com
│   ├── msp
│   │   ├── admincerts    [組織Org1的Admin用戶證書]
│   │   │   └── Admin@org1.jianshu.com-cert.pem
│   │   ├── cacerts        [組織Org1的CA根證書]
│   │   │   └── ca.org1.jianshu.com-cert.pem
│   │   ├── keystore    [組織Org1的peer0節(jié)點(diǎn)的證書的私鑰]
│   │   │   └── eba279fe94e117473da7eee00_sk
│   │   ├── signcerts    [組織Org1的peer0節(jié)點(diǎn)的證書牺蹄,由組織Org1的CA根證書簽發(fā)]
│   │   │   └── peer0.org1.jianshu.com-cert.pem
│   │   └── tlscacerts    [組織Org1的tls的根證書]
│   │       └── tlsca.org1.jianshu.com-cert.pem
│   └── tls
│       ├── ca.crt   [組織Org1的tls的根證書忘伞,與tlscacerts下的一樣]
│       ├── server.crt   [由組織Org1的tls的根證書簽發(fā)的用于tls通信的證書]
│       └── server.key [由組織Org1的tls的根證書簽發(fā)的用于tls通信的證書的私鑰]
  • 在上面的結(jié)構(gòu)中,signcerts是peer節(jié)點(diǎn)peer0的證書沙兰,keystore是與這個證書對應(yīng)的私鑰;具體可以使用之前的腳本進(jìn)行驗(yàn)證
  • 其他都是peer0所屬的組織Org1的相關(guān)證書氓奈。
  • tls文件夾下是peer0進(jìn)行tls通信時使用的證書server.crt和私鑰server.key,而ca.crt是組織Org1的tls根證書

users文件夾

users文件夾內(nèi)部結(jié)構(gòu)與peers文件夾一致,主要包含了每個用戶的msp證書和私鑰鼎天,tls通信使用的證書和私鑰舀奶。

每個組織都有自己的msp根證書和tls根證書,每個組織都包含若干的peer節(jié)點(diǎn)和user用戶斋射,他們自己的證書都是通過相對應(yīng)類型的根證書簽發(fā)的育勺。而且,從文件夾的結(jié)構(gòu)罗岖,我們也可以看出涧至,每個證書都可以從文件名稱看出是何種證書。

在下一節(jié)中桑包,我們將會啟動Fabric-CA的服務(wù)器南蓬,并將其綁定到組織org1.jianshu.com上,由其來動態(tài)簽發(fā)證書。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赘方,一起剝皮案震驚了整個濱河市烧颖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窄陡,老刑警劉巖倒信,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異泳梆,居然都是意外死亡鳖悠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進(jìn)店門优妙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乘综,“玉大人,你說我怎么就攤上這事套硼】ǔ剑” “怎么了?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵邪意,是天一觀的道長九妈。 經(jīng)常有香客問我,道長雾鬼,這世上最難降的妖魔是什么萌朱? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮策菜,結(jié)果婚禮上晶疼,老公的妹妹穿的比我還像新娘。我一直安慰自己又憨,他們只是感情好翠霍,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蠢莺,像睡著了一般寒匙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上躏将,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天锄弱,我揣著相機(jī)與錄音,去河邊找鬼耸携。 笑死棵癣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的夺衍。 我是一名探鬼主播狈谊,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了河劝?” 一聲冷哼從身側(cè)響起壁榕,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赎瞎,沒想到半個月后牌里,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡务甥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年牡辽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敞临。...
    茶點(diǎn)故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡态辛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挺尿,到底是詐尸還是另有隱情奏黑,我是刑警寧澤,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布编矾,位于F島的核電站熟史,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏窄俏。R本人自食惡果不足惜蹂匹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望裆操。 院中可真熱鬧怒详,春花似錦、人聲如沸踪区。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缎岗。三九已至,卻和暖如春白粉,著一層夾襖步出監(jiān)牢的瞬間传泊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工鸭巴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眷细,地道東北人。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓鹃祖,卻偏偏與公主長得像溪椎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評論 2 361

推薦閱讀更多精彩內(nèi)容