一.证书目录解析

 
通过cryptogen生成所有证书文件后,以peerOrgannizations的第一个组织树org1为例,每个目录和对应文件的功能如下:
 
ca: 存放组织的根证书和对应的私钥文件,默认采用EC算法,证书为自签名。组织内的实体将基于该证书作为证书根。
tlsca:存放组织tls连接用的根证书和私钥文件。(TLS是传输层安全协议,其实就是SSL,现在叫TLS了)
msp:存放代表该组织的身份信息。
       admincerts:组织管理员的身份验证证书,被根证书签名。
       cacerts:组织的根证书,同ca目录下文件。
       tlscacerts:用于TLS的ca证书,自签名。
peers:存放属于该组织的所有peer节点。
       peer0:第一个peer的信息,包括其msp证书和TLS证书两类。
             msp:
                  admincerts:组织管理员的身份验证证书。peer将基于这些证书来认证交易签署这是否为管理员身份。
                  cacerts:组织的根证书.
                  keystore:本节点的身份私钥,用来签名。
                  signcerts:验证本节点签名的证书,被组织根证书签名。
                  tlscacerts:TLS连接用的身份证书,即组织TLS证书。
             tls:存放tls相关的证书和私钥
                  ca.crt:组织的根证书
                  server.crt:验证本节点签名的证书,被组织根证书签名。
                  server.key:本节点的身份私钥,用来签名。
       peer1:第二个peer的信息,结构类似。(省略)
users:存放属于该组织的用户的实体。
      Admin:管理员用户的信息,包括其msp证书和tls证书两类。
            msp:
                  admincerts:组织根证书作为管理者身份验证证书。
                  cacerts:组织的根证书.
                  keystore:本用户的身份私钥,用来签名。
                  signcerts:管理员用户的身份验证证书,被组织根证书签名。要被某个Peer认可,则必须放到该peer的msp/admincerts下。
                  tlscacerts:TLS连接用的身份证书,即组织TLS证书。
           tls:存放tls相关的证书和私钥
                ca.crt:组织的根证书
                server.crt:管理员的用户身份验证证书,被组织根证书签名。
                server.key:管理员用户的身份私钥,用来签名。
     User1:第一个用户的信息,包括msp证书和tls证书两类。
           msp:
                 admincerts:组织根证书作为管理者身份验证证书。
                 cacerts:组织的根证书.
                 keystore:本用户的身份私钥,用来签名。
                 signcerts:验证本用户签名的身份证书,被组织根证书签名。
                 tlscacerts:TLS连接用的身份证书,即组织TLS证书。
           tls:存放tls相关的证书和私钥
                 ca.crt:组织的根证书
                 server.crt:验证用户签名的身份证书,被组织根证书签名。
                 server.key:用户的身份私钥,用来签名。
    User2:第二个用户的信息,结构类似(省略)
 

二.证书内容解析

查看证书文件(实际上,数字证书就是经过CA认证过的公钥)的标准为X.509,编码格式为pem,以-----BEGIN开头,以-----END结尾。X.509 数字证书不但包括用户名和公共密钥,而且还包括有关该用户的其他信息。除了扩展名为PEM的还有以下这些:
CRT :应该是certificate的三个字母,还是证书的意思。打开看也是pem编码格式。
KEY: 用来存放一个公钥或私钥,并非X.509证书。打开看依然PEM格式。
 
证书的默认签名算法为ECDSA,Hash算法为SHA-256。Fabric中设计中考虑了三种类型证书:
登记证书(ECert):颁发给提供了注册凭证的用户或节点实体,长期有效。(主要就是通ECert对实体身份检验)
通信证书(TLSCert):TLS证书用来保障通信链路安全,控制对网络层的接入访问,可以对远端实体身份校验,防止窃听。
交易证书(TCert):颁发给用户,控制每个交易的权限,一般针对某个交易,短期有效。(此功能fabric还暂未启用)
 
在chaincode里可以通过shim API的GetCreator函数提取调用当前交易的客户端的身份证书,使用GO语言的pem包将证书解码,然后使用x.509包解析证书中的信息。

搭建基于hyperledger fabric的联盟社区(八) --Fabric证书解析的更多相关文章

  1. Fabric go sdk初始化所需证书解析

    fabric sdk go 提供的官方文档少之又少,要想入门,主要就靠研究官方的e2e系列示例,这真的是一件挺无奈的事情.没法子,只能硬着头皮上了.研究发现,e2e这个例子是通过cryptogen生成 ...

  2. 搭建基于hyperledger fabric的联盟社区(一) --前言

    三个月前上面发了一个关于智群汇聚和问题求解研究的项目,我们公司做其中的一个子项目,就是基于区块链的科技信息联盟构建.利用区块链的去中心化特性,构建一个基于区块链的科技社区,以提供科技群智汇聚采集的基础 ...

  3. 搭建基于hyperledger fabric的联盟社区(六) --搭建node.js服务器

    接下来我要做的是用fabric sdk来做出应用程序,代替CLI与整个区块链网络交互.并且实现一个http API,向社区提供一个简单的接口,使社区轻松的与区块链交互. 官方虽然提供了Node.JS, ...

  4. 搭建基于hyperledger fabric的联盟社区(五) --启动Fabric网络

    现在所有的文件都已经准备完毕,我们可以启动fabric网络了. 一.启动orderer节点 在orderer服务器上运行: cd ~/go/src/github.com/hyperledger/fab ...

  5. 搭建基于hyperledger fabric的联盟社区(四) --chaincode开发

    前几章已经分别把三台虚拟机环境和配置文件准备好了,在启动fabric网络之前我们要准备好写好的chaincode.chaincode的开发一般是使用GO或者JAVA,而我选择的是GO语言.先分析一下官 ...

  6. 搭建基于hyperledger fabric的联盟社区(七) --升级chaincode

    上个版本的chaincode有很多功能不完备,所以要部署新版本的chaincode.Fabric支持在保留现有状态的前提对chaincode进行升级. 一.新版chaincode 新版本的chainc ...

  7. 搭建基于hyperledger fabric的联盟社区(三) --生成公私钥证书及配置文件

    一.生成公私钥和证书 Fabric中有两种类型的公私钥和证书,一种是给节点之前通讯安全而准备的TLS证书,另一种是用户登录和权限控制的用户证书.这些证书本来应该是由CA来颁发,但是目前只有两个社区,所 ...

  8. 搭建基于hyperledger fabric的联盟社区(二) --环境配置

    接下来讲一下在本地测试区块链网络的过程.我要部署的是2peer+1orderer架构,所以需要准备三台虚拟机,为了方便起见可以先把一台配置好,然后复制出剩余两台即可.搭建虚拟机我用的是virtualb ...

  9. 搭建基于hyperledger fabric的联盟社区(九) --检索状态数据库

    一.启动elasticsearch服务 官网下载压缩包解压,进入bin目录启动: ./elasticsearch 通过ip访问 localhost:9200,可以看到如下信息 { name: &quo ...

随机推荐

  1. h5开发中,利用微信或者QQ登陆以后获取用户头像在canvas画布显示问题

    在实际开发上先的h5页面产品中,总会遇到各种坑,好多坑都是安卓和iPhone端兼容的问题(用电脑谷歌浏览器输入  chrome://inspect/#devices可以用手机USB调试,打开) eg: ...

  2. DBMS_OUTPUT(用于输入和输出信息)

    1.概述 作用:用于输入和输出信息,使用过程PUT和PUT_LINES可以将信息发送到缓冲区,使用过程GET_LINE和GET_LINES可以显示缓冲区信息.该包用来输出plsql变量的值,属于系统用 ...

  3. php5.4.0以后加入trait实现代码复用【摘录】

    在http://www.php.net/manual/zh/language.oop5.traits.php 查看了一下5.4.0提供的特性trait顺便做一个标记(总结): 首先要明确trait和类 ...

  4. 20165202 学习基础和c语言基础调查

    你有什么技能比大多人(超过90%以上)更好? 我对自行车运动的兴趣始于初中时期,不敢说比大多数人更好,但在业余爱好者中相对来说还不错. 针对这个技能的获取你有什么成功的经验? 接触自行车运动几年里,我 ...

  5. vue.js 源代码学习笔记 ----- 工具方法 option

    /* @flow */ import Vue from '../instance/index' import config from '../config' import { warn } from ...

  6. cookie和session的区别与联系

    http://www.cnblogs.com/s1nker/p/4876284.html 基本概念 对于许多人来说,都知道的是,cookie是存储在客户端的,可以用来放需要长期使用的内容,例如用户密码 ...

  7. 用JQuery怎么去一次性获取 aspTextBox 文本框的值

    如:<asp:TextBox ID="txtSubject" runat="server">aa</asp:TextBox> 第一次用服 ...

  8. JSON Schema(模式)

    JSON Schema指的是数据交换中的一种虚拟的“合同”. JSON验证器负责验证语法错误,JSON Schema负责提供一致性检验. JSON Schema是数据接收方额第一道防线,也是数据发送方 ...

  9. swift metal ios8 关键字.

    swift metal ios8  关键字. 4000API. 无所谓谁打败谁吧. 行业内用户用的多 资源多 问题容易解决. 今年明显unity 火热程度非常. 然,万变不离其中. 对于游戏产品来说, ...

  10. IOS开发 基础框架(Fondation Framework)的线程安全

    有一种误解,认为基础框架(Foundation framework)是线程安全的,而Application Kit是非线程安全的.不幸的是,这是一个总的概括,从而造成一点误导.每个框架都包含了线程安全 ...