如何修改Fabric1.4证书 & 证书目录结构简介

由于官方例程无法满足我们的项目需要,所以在Fabric1.4提供的BYFN的例程基础之上,按照项目需要修改相关证书。

一. 修改证书里面的相关配置字段

首先需要修改证书里面关于国家、省市等一些基础信息,下面两张图片表示修改前后的对比:


修改前的证书


修改后的证书

为实现上述修改,需要修改配置文件crypto-config.yaml,增加内容如下图所示:


配置文件修改内容

在原配置文件中,并没有指定CA关于CSR字段的相关内容,阅读源码可知,其CSR相关字段采用缺省值。如果在crypto-config.yaml中指定了CSR字段的相关内容,则使用配置文件中的内容。

修改后的效果如前面截图所示。

配置文件一共需要修改三处,Order节点、Peer节点的Org1和Org2。

Order节点只需增加三项:Country、Province、Locality,分别代表国家、省、市。

在修改Peer节点的Org1和Org2时,在上面修改的基础上,还增加了StreetAddress选项,临时充当一个自定义选项,来区分铸币行、清算行等。

以后若项目需要,可研究如何增加扩展选项。

二. 修改注意事项

本章节介绍在修改配置文件时,遇到的几个问题。

2.1 使用OU

曾经想使用OU选项作为自定义项,但发现Peer节点已使用了OU选项,来区分是Peer还是Client。如果强行在crypto-config.yaml指定了OU,则证书中会出现两个OU。

本人曾经试图把EnableNodeOUs关掉,这样就不会出现2个OU,同时也可以正常生成证书,但是无法通过后续的byfn(build your first network)的测试。

因为如果设置了EnableNodeOUs,就在msp目录下生成config.yaml文件。如果把EnableNodeOUs关掉,会让生成的证书不全,导致不能通过后续测试。

2.2 注意缩进的格式

在修改配置文件时,必须用空格缩进,不要使用TAB键,否则会导致解析脚本文件出错。

在最初修改时,由于没有注意这个细节,导致有时配置文件可修改成功,有时不行。后来仔细阅读出错的提示,才发现此原因。

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

在配置文件config.yaml中修改了CSR相关字段后,会同时影响颁发者(Issuer Name)和使用者(Subject Name)的相关字段。

在实际应用过程中,颁发者和使用者的相关字段是不同的,此处为简化处理。

三. 证书和公私钥简介

本章节介绍证书和公私钥的相关概念。

证书代表身份,用来在实体间进行通信以及交易的时候进行签名与验证身份。

查看证书文件(数字证书是经过CA认证过的公钥)的标准为X.509,编码格式为pem,以-----BEGIN开头,以-----END结尾。

X.509数字证书不但包括用户名和公共密钥,而且还包括有关该用户的其它信息。数字证书除了扩展名为PEM,也可以是CRT、KEY。

CRT:Certificate缩写,PEM编码格式。

KEY:用来存放一个公钥或私钥,并非X.509证书,PEM格式。

证书的默认签名算法为ECDSA,Hash算法为SHA-256。

Fabric中涉及了以下类型证书:

登记证书(ECert):颁发给提供了注册凭证的用户或节点实体,长期有效。(主要就是通ECert对实体身份检验)

通信证书(TLSCert):TLS证书用来保障通信链路安全,控制对网络层的接入访问,可以对远端实体身份校验,防止窃听。

在ChainCode里可以通过shim API的GetCreator函数提取调用当前交易的客户端的证书,使用GO语言的pem包将证书解码,然后使用x.509包解析证书中的信息。

四. 生成证书和公私钥的过程

4.1 生成节点的CA证书。


创建 crypto-config/peerOrganizations/{domain}/ca 目录,例子中为org.example.com。根据yaml:CA的配置,使用fabric的加密服务提供程序(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 导入到MSP

把ca下的证书和tls证书导入到crypto-config/peerOrganizations/org2.example.com/msp/cacerts和crypto-config/peerOrganizations/org2.example.com/msp/tlscacerts下


4.4 生成配置文件

如果设置了EnableNodeOUs,就在msp目录下生成config.yaml文件 

4.5 创建本地msp

根据配置的节点信息,为每一个节点创建本地的msp, 包括两部分:

第一部分为创建peers/{commonName}/msp 。具体为:

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

peers/peer1.org2.example.com/msp

这部分证书都是通过CSP(Cryptographic Service Provider:加密服务提供者) 产生一个keystore私钥,然后使用这个私钥对应的公钥生成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证书,一个公钥证书和一个私钥证书。如果节点类型为 client,就生成客户端的公钥证书和私钥证书,如果节点类型为orderer或是peer类型,就生成服务端相关的证书。

私钥存在serer.key内。ca.crt是把证书内容通过x509.ParseCertificate转换得到,而server.crt是通过把写入了证书内容的pem文件直接重命名成crt文件得到。


4.6 生成用户证书

根据配置的yaml:Users下的yaml:Count 的数目,来为每个用户生成用户信息,生成的内容和步骤和上一节完全一致。

用户名的生成规则为:从1开始循环递增到Count, 每个用户名为:"User" + index + @ + Domain , 例子中就为:User1@org2.example.com。默认会有一个admin用户。


4.7 复制管理员证书

把user目录下的signcerts 作为admincerts copy到org1.example.com/msp/admincerts和org1.example.com/peers/{CommonName}/admincerts下。

到此,节点相关的所有证书信息已经生成。

生成orderer相关的证书信息,过程和节点完全类似的。

五. 证书的结构

5.1 组织的证书结构

每个组织都会生成单独的根证书。相关的子目录有5个(可在Ubuntu中安装Dolphin文件管理器以显示目录树),如下图所示:


(1)ca

ca目录存放组织的根证书和对应的私钥文件,采用EC算法,证书为自签名(自已签发自己的公钥)。组织内的实体将基于该证书作为根证书。

(2)msp

msp目录存放代表该组织的身份信息。

A、admincerts:存放被根证书签名的组织管理员的身份验证证书。

B、cacerts:存放组织的根证书,与ca目录下的根证书文件相同。

C、tlscacerts:用于TLS的ca证数,证书为自签名。

(3)peers(orders)

每个Orderer或Peer节点的证书结构都是相同的,包括msp和tls目录。

(4)tlsca

存放组织的TLS证书。

(5)users

用于存放属于该组织的用户实体。

5.2 Peer节点的证书结构

每个Orderer或Peer节点的证书结构都是相同的,包括msp和tls目录。

(1)msp

admincerts:存放组织管理员的身份验证证书,用于验证交易签名者是否为管理员身份。

cacerts:存放组织的根证书。

keystore:本节点的身份私钥,用来签名。

signcerts:验证本节点签名的证书,被组织根证书签名。

tlscacerts:TLS连接用的证书,即组织的TLS证书。

(2)tls

存放tls相关的证书和私钥。

ca.crt:组织的根证书。

server.crt:验证本节点签名的证书,被组织根证书签名。

server.key:本节点的身份私钥,用来签名。

5.3 用户实体的证书结构

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:存放管理员用户的身份验证证书(Admin@org1.example.com-cert.pem),由组织根证书签名,要放到Peer节点的msp/admincerts下才会被Peer节点认可

tlscacerts:TLS连接用的证书,即组织TLS证书(tlsca.org1.example.com-cert.pem)

(B)tls

ca.crt:组织的根证书

client.crt: 管理员用户的身份验证证书,由组织根证书签名

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:用户的身份验证证书(User1@org1.example.com-cert.pem),由组织根证书签名

tlscacerts:TLS连接用的证书,即组织TLS证书(tlsca.org1.example.com-cert.pem)

(B)tls

ca.crt:组织的根证书。

client.crt: 用户的身份验证证书,由组织根证书签名。

client.key:用户身份私钥,用来签名。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,728评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,220评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 171,936评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,976评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,981评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,468评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,843评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,817评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,353评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,384评论 3 346
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,510评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,113评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,833评论 3 338
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,290评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,419评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,055评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,577评论 2 365

推荐阅读更多精彩内容