如何修改Fabric1.4證書 & 證書目錄結(jié)構(gòu)簡介

由于官方例程無法滿足我們的項(xiàng)目需要壤追,所以在Fabric1.4提供的BYFN的例程基礎(chǔ)之上哟忍,按照項(xiàng)目需要修改相關(guān)證書。

一. 修改證書里面的相關(guān)配置字段

首先需要修改證書里面關(guān)于國家近顷、省市等一些基礎(chǔ)信息遂赠,下面兩張圖片表示修改前后的對比:


修改前的證書


修改后的證書

為實(shí)現(xiàn)上述修改,需要修改配置文件crypto-config.yaml脉让,增加內(nèi)容如下圖所示:


配置文件修改內(nèi)容

在原配置文件中桂敛,并沒有指定CA關(guān)于CSR字段的相關(guān)內(nèi)容,閱讀源碼可知溅潜,其CSR相關(guān)字段采用缺省值术唬。如果在crypto-config.yaml中指定了CSR字段的相關(guān)內(nèi)容,則使用配置文件中的內(nèi)容伟恶。

修改后的效果如前面截圖所示碴开。

配置文件一共需要修改三處,Order節(jié)點(diǎn)博秫、Peer節(jié)點(diǎn)的Org1和Org2潦牛。

Order節(jié)點(diǎn)只需增加三項(xiàng):Country、Province挡育、Locality巴碗,分別代表國家、省即寒、市橡淆。

在修改Peer節(jié)點(diǎn)的Org1和Org2時召噩,在上面修改的基礎(chǔ)上,還增加了StreetAddress選項(xiàng)逸爵,臨時充當(dāng)一個自定義選項(xiàng)具滴,來區(qū)分鑄幣行、清算行等师倔。

以后若項(xiàng)目需要构韵,可研究如何增加擴(kuò)展選項(xiàng)。

二. 修改注意事項(xiàng)

本章節(jié)介紹在修改配置文件時趋艘,遇到的幾個問題疲恢。

2.1 使用OU

曾經(jīng)想使用OU選項(xiàng)作為自定義項(xiàng),但發(fā)現(xiàn)Peer節(jié)點(diǎn)已使用了OU選項(xiàng)瓷胧,來區(qū)分是Peer還是Client显拳。如果強(qiáng)行在crypto-config.yaml指定了OU,則證書中會出現(xiàn)兩個OU搓萧。

本人曾經(jīng)試圖把EnableNodeOUs關(guān)掉杂数,這樣就不會出現(xiàn)2個OU,同時也可以正常生成證書矛绘,但是無法通過后續(xù)的byfn(build your first network)的測試耍休。

因?yàn)槿绻O(shè)置了EnableNodeOUs,就在msp目錄下生成config.yaml文件货矮。如果把EnableNodeOUs關(guān)掉羊精,會讓生成的證書不全,導(dǎo)致不能通過后續(xù)測試囚玫。

2.2 注意縮進(jìn)的格式

在修改配置文件時喧锦,必須用空格縮進(jìn),不要使用TAB鍵抓督,否則會導(dǎo)致解析腳本文件出錯燃少。

在最初修改時,由于沒有注意這個細(xì)節(jié)铃在,導(dǎo)致有時配置文件可修改成功阵具,有時不行。后來仔細(xì)閱讀出錯的提示定铜,才發(fā)現(xiàn)此原因阳液。

2.3 修改配置文件的作用范圍

在配置文件config.yaml中修改了CSR相關(guān)字段后,會同時影響頒發(fā)者(Issuer Name)和使用者(Subject Name)的相關(guān)字段揣炕。

在實(shí)際應(yīng)用過程中帘皿,頒發(fā)者和使用者的相關(guān)字段是不同的畸陡,此處為簡化處理虽填。

三. 證書和公私鑰簡介

本章節(jié)介紹證書和公私鑰的相關(guān)概念斋日。

證書代表身份桑驱,用來在實(shí)體間進(jìn)行通信以及交易的時候進(jìn)行簽名與驗(yàn)證身份。

查看證書文件(數(shù)字證書是經(jīng)過CA認(rèn)證過的公鑰)的標(biāo)準(zhǔn)為X.509赊级,編碼格式為pem理逊,以-----BEGIN開頭晋被,以-----END結(jié)尾刚盈。

X.509數(shù)字證書不但包括用戶名和公共密鑰藕漱,而且還包括有關(guān)該用戶的其它信息。數(shù)字證書除了擴(kuò)展名為PEM威蕉,也可以是CRT橄仍、KEY侮繁。

CRT:Certificate縮寫,PEM編碼格式舀奶。

KEY:用來存放一個公鑰或私鑰育勺,并非X.509證書涧至,PEM格式南蓬。

證書的默認(rèn)簽名算法為ECDSA赘方,Hash算法為SHA-256窄陡。

Fabric中涉及了以下類型證書:

登記證書(ECert):頒發(fā)給提供了注冊憑證的用戶或節(jié)點(diǎn)實(shí)體跳夭,長期有效。(主要就是通ECert對實(shí)體身份檢驗(yàn))

通信證書(TLSCert):TLS證書用來保障通信鏈路安全润歉,控制對網(wǎng)絡(luò)層的接入訪問,可以對遠(yuǎn)端實(shí)體身份校驗(yàn)颈抚,防止竊聽踩衩。

在ChainCode里可以通過shim API的GetCreator函數(shù)提取調(diào)用當(dāng)前交易的客戶端的證書邪意,使用GO語言的pem包將證書解碼九妈,然后使用x.509包解析證書中的信息雾鬼。

四. 生成證書和公私鑰的過程

4.1 生成節(jié)點(diǎn)的CA證書萌朱。


創(chuàng)建 crypto-config/peerOrganizations/{domain}/ca 目錄策菜,例子中為org.example.com晶疼。根據(jù)yaml:CA的配置,使用fabric的加密服務(wù)提供程序(bccsp)翠霍,生成P256的橢圓加密算法的私鑰和公鑰,然后使用ca中指定的 country, province寒匙,common name等信息生成包含公鑰信息的ca.org2.example.com-cert.pem 文件。

4.2 生成tls的證書会宪。


同上面的ca證書,只不過tls證書中的common name為 tlsca, 而上面的ca證書中的common name為ca塞帐。

4.3 導(dǎo)入到MSP

把ca下的證書和tls證書導(dǎo)入到crypto-config/peerOrganizations/org2.example.com/msp/cacerts和crypto-config/peerOrganizations/org2.example.com/msp/tlscacerts下


4.4 生成配置文件

如果設(shè)置了EnableNodeOUs葵姥,就在msp目錄下生成config.yaml文件?

4.5 創(chuàng)建本地msp

根據(jù)配置的節(jié)點(diǎn)信息,為每一個節(jié)點(diǎn)創(chuàng)建本地的msp,?包括兩部分:

第一部分為創(chuàng)建peers/{commonName}/msp?句携。具體為:

peers/peer0.org2.example.com/msp 和

peers/peer1.org2.example.com/msp

這部分證書都是通過CSP(Cryptographic Service Provider:加密服務(wù)提供者)?產(chǎn)生一個keystore私鑰牌里,然后使用這個私鑰對應(yīng)的公鑰生成admincerts,cacerts务甥,signcerts?的證書。而cacerts下的證書和peerOrganizations/{domain}/ca下ca.{domain}-cert.pem是完全一樣的喳篇。tlscacerts?下的證書也和{domain}下其他的tlscacerts文件夾下的證書完全一致敞临。

第二部分是生成peers/{commonName}/tls目錄下的公私鑰證書,具體為:peers/peer0.org2.example.com/tls

peers/peer1.org2.example.com/tls

這部分證書是重新生成的麸澜。包含一個ca證書挺尿,一個公鑰證書和一個私鑰證書。如果節(jié)點(diǎn)類型為?client炊邦,就生成客戶端的公鑰證書和私鑰證書编矾,如果節(jié)點(diǎn)類型為orderer或是peer類型,就生成服務(wù)端相關(guān)的證書馁害。

私鑰存在serer.key內(nèi)窄俏。ca.crt是把證書內(nèi)容通過x509.ParseCertificate轉(zhuǎn)換得到,而server.crt是通過把寫入了證書內(nèi)容的pem文件直接重命名成crt文件得到碘菜。


4.6 生成用戶證書

根據(jù)配置的yaml:Users下的yaml:Count 的數(shù)目凹蜈,來為每個用戶生成用戶信息,生成的內(nèi)容和步驟和上一節(jié)完全一致忍啸。

用戶名的生成規(guī)則為:從1開始循環(huán)遞增到Count, 每個用戶名為:"User" + index + @ + Domain , 例子中就為:User1@org2.example.com仰坦。默認(rèn)會有一個admin用戶。


4.7 復(fù)制管理員證書

把user目錄下的signcerts 作為admincerts copy到org1.example.com/msp/admincerts和org1.example.com/peers/{CommonName}/admincerts下计雌。

到此悄晃,節(jié)點(diǎn)相關(guān)的所有證書信息已經(jīng)生成。

生成orderer相關(guān)的證書信息凿滤,過程和節(jié)點(diǎn)完全類似的妈橄。

五. 證書的結(jié)構(gòu)

5.1 組織的證書結(jié)構(gòu)

每個組織都會生成單獨(dú)的根證書庶近。相關(guān)的子目錄有5個(可在Ubuntu中安裝Dolphin文件管理器以顯示目錄樹),如下圖所示:


(1)ca

ca目錄存放組織的根證書和對應(yīng)的私鑰文件眷细,采用EC算法拦盹,證書為自簽名(自已簽發(fā)自己的公鑰)。組織內(nèi)的實(shí)體將基于該證書作為根證書溪椎。

(2)msp

msp目錄存放代表該組織的身份信息普舆。

A、admincerts:存放被根證書簽名的組織管理員的身份驗(yàn)證證書校读。

B沼侣、cacerts:存放組織的根證書,與ca目錄下的根證書文件相同歉秫。

C蛾洛、tlscacerts:用于TLS的ca證數(shù),證書為自簽名雁芙。

(3)peers(orders)

每個Orderer或Peer節(jié)點(diǎn)的證書結(jié)構(gòu)都是相同的轧膘,包括msp和tls目錄。

(4)tlsca

存放組織的TLS證書兔甘。

(5)users

用于存放屬于該組織的用戶實(shí)體谎碍。

5.2 Peer節(jié)點(diǎn)的證書結(jié)構(gòu)

每個Orderer或Peer節(jié)點(diǎn)的證書結(jié)構(gòu)都是相同的,包括msp和tls目錄洞焙。

(1)msp

admincerts:存放組織管理員的身份驗(yàn)證證書蟆淀,用于驗(yàn)證交易簽名者是否為管理員身份。

cacerts:存放組織的根證書澡匪。

keystore:本節(jié)點(diǎn)的身份私鑰熔任,用來簽名。

signcerts:驗(yàn)證本節(jié)點(diǎn)簽名的證書唁情,被組織根證書簽名疑苔。

tlscacerts:TLS連接用的證書,即組織的TLS證書荠瘪。

(2)tls

存放tls相關(guān)的證書和私鑰夯巷。

ca.crt:組織的根證書。

server.crt:驗(yàn)證本節(jié)點(diǎn)簽名的證書哀墓,被組織根證書簽名趁餐。

server.key:本節(jié)點(diǎn)的身份私鑰,用來簽名篮绰。

5.3 用戶實(shí)體的證書結(jié)構(gòu)

5.3.1 Admin@org1.example.com

存放管理員用戶的信息后雷,包括msp目錄和tls目錄

(A)msp

admincerts:存放管理員證書(Admin@org1.example.com-cert.pem)

cacerts:存放組織的根證書(ca.org1.example.com-cert.pem)

keystore:存放本用戶的身份私鑰,用來簽名

signcerts:存放管理員用戶的身份驗(yàn)證證書(Admin@org1.example.com-cert.pem),由組織根證書簽名臀突,要放到Peer節(jié)點(diǎn)的msp/admincerts下才會被Peer節(jié)點(diǎn)認(rèn)可

tlscacerts:TLS連接用的證書勉抓,即組織TLS證書(tlsca.org1.example.com-cert.pem)

(B)tls

ca.crt:組織的根證書

client.crt: 管理員用戶的身份驗(yàn)證證書,由組織根證書簽名

client.key:管理員的身份私鑰候学,用來簽名

5.3.2 User1@org1.example.com

User1是User1用戶的信息藕筋,包括msp證書和tls證書

(A)msp

admincerts:用戶證書(User1@org1.example.com-cert.pem)

cacerts:存放組織的根證書(ca.org1.example.com-cert.pem)

keystore:本用戶的身份私鑰,用來簽名

signcerts:用戶的身份驗(yàn)證證書(User1@org1.example.com-cert.pem)梳码,由組織根證書簽名

tlscacerts:TLS連接用的證書隐圾,即組織TLS證書(tlsca.org1.example.com-cert.pem)

(B)tls

ca.crt:組織的根證書。

client.crt: 用戶的身份驗(yàn)證證書掰茶,由組織根證書簽名暇藏。

client.key:用戶身份私鑰,用來簽名濒蒋。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盐碱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子沪伙,更是在濱河造成了極大的恐慌瓮顽,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件围橡,死亡現(xiàn)場離奇詭異趣倾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)某饰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來善绎,“玉大人黔漂,你說我怎么就攤上這事≠鹘矗” “怎么了炬守?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長剂跟。 經(jīng)常有香客問我减途,道長,這世上最難降的妖魔是什么曹洽? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任鳍置,我火速辦了婚禮,結(jié)果婚禮上送淆,老公的妹妹穿的比我還像新娘税产。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布辟拷。 她就那樣靜靜地躺著撞羽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪衫冻。 梳的紋絲不亂的頭發(fā)上诀紊,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機(jī)與錄音隅俘,去河邊找鬼邻奠。 笑死,一個胖子當(dāng)著我的面吹牛考赛,可吹牛的內(nèi)容都是我干的惕澎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼颜骤,長吁一口氣:“原來是場噩夢啊……” “哼唧喉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起忍抽,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤八孝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鸠项,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體干跛,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年祟绊,在試婚紗的時候發(fā)現(xiàn)自己被綠了楼入。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡牧抽,死狀恐怖嘉熊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情扬舒,我是刑警寧澤阐肤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站讲坎,受9級特大地震影響孕惜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晨炕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一衫画、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瓮栗,春花似錦碧磅、人聲如沸碘箍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丰榴。三九已至,卻和暖如春秆撮,著一層夾襖步出監(jiān)牢的瞬間四濒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工职辨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盗蟆,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓舒裤,卻偏偏與公主長得像喳资,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子腾供,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

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