Hyperleder Fabric系统架构核心逻辑包括MemberShip、Blockchain和Chaincode

其中上述3个核心逻辑中,Membership服务用来管理节点身份、隐私、confidentiality 和 auditability。在一个 non-permissioned的区块链网络里,参与者不要求授权,所有的节点被视作一样,都可以提交一个transaction,去把这些交易存到区块(blocks)中。Membership Service将一个 non-permissioned的区块链网络变成一个permissioned的区块链网络,凭借着Public Key Infrastructure (PKI)、去中心和一致性。

从上面的描述中可以看出,对于一个隐私性要求较高,节点需要授权才可以加入区块链网络并节点可能存在不同角色的区块链我那个落,Membership从中起到授权用户、加密传输数据的作用。在Fabric 1.0版本中,MemberShip Service替换成fabric-ca模块。由于CA在pemissioned区块链网络中的重要作用,Fabric也将CA作为一个单独的模块,可以独立运行,其代码可从https://github.com/hyperledger/fabric-ca获取得到。

下面的图表描述了CA
服务器在Hyperleder
Fabric框架体系架构中的工作方式:

_Hyperleder Fabric系统架构核心逻辑包括MemberShip、Blockchain和Chaincode
-->

从表中可以看出,CA 服务器结构为树形结构,整个树形结构的根节点为根CA(Root Server),存在多个中间CA(Intermediate CA),图中每个中间CA服务器上可以配置一个CA服务集群,CA服务集群通过前置的HAproxy实现负载均衡。

Fabric CA提供了两种访问方式调用Server服务,一种是通过Client调用,另一种是通过SDK调用。两种调用都是REST风格的。本文使用的是通过Client调用。

接下来,参考fabric-ca官方文档说明要求,针对fabric-ca的请求/发放证书、注册节点等操作实践操作一遍已加深理解。

首先安装启动fabric
ca,启动fabric-ca可以通过docker和下载fabric-ca至本地启动两种方式,下文安装了fabric-ca在本地并启动:

本地启动fabric-ca的准备条件:

1、安装Go
1.7以上版本

2、正确配置了GOPATH环境变量

3、libtool和libtdhl-dev包已安装

通过运行命令:
go
get -u github.com/hyperledger/fabric-ca/cmd/...

上述命令可以安装fabric-ca-server和fabric-ca-client之$GOPATH/bin目录下

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcUAAAAvCAIAAAAdC0aDAAAiD0lEQVR4nO2dB1QTSxeAZ1NJQgi9ilJEpCgWRMQGAgqIBQU7KorYULHwVGxYwP6wF2xgQxEBe0FEsaNYwAqoIL2ItEDq7p8CSgsJEBHfv9/hHLKbuzN3Zu/euTM7mcEhCALaEXDZ66OLpi8JeUOvPkGbFJd1xlr2jyqFgvIXA+eetu3ofs8g8OPrlYaEvzWLv0IHgPtD+YoCI9fD68Rrj52piYkf86vwCh2NzExRZ4qC0nIwGlPi2FP+9iz+Ch3anT8Vglc0sLQ3+NNaoKCgoDSH9ulPUVBQUP4+UH+KgoKCIh3+r/wpXPb28qlLb+XcfN27EP+UDqVJkSFRb2njV07v+pt04Obd3LBszysd/3ObLMi/J4uGcPIfnD19r9DEc5GDxv+VUaGg/EJo+khhhJO2280uO1ITl3bG/2GVfh/sb+HLvDfmulgs+nP+lJ0ZscKHp4PV0qb8KVwcu8R6xO5vPf3v3F5nTmleFpyix2fO3Mh1Wcxtpa7NofL1jtnLLmuuGu2N+tNfMF75Gvba8a3msFvQ55c+emj1/HcR3ltI2cbLjnTz2vGILwtXGP5Jh8pIDnR03JY7Mfb19t4yjQlwCh/sX+4XFP4wgw7kOg9x9/s3cJqZHKat9WwcxuvlXXtuy2j0O12/Nx8CukvoxhkpF88nVwHwOOxW5krzrlKe/cHNCZ9q733pYyEd5h9C1I7m9pN8/P0mdKO2UUXCBZFuBmMjsROupZ11UoQE55DSe3O62gTTR4WnXHRTx/Jv9eNjmwL2h91OLuQAnJLhYLfFmzfP6iNfS0eE/v7sqkX+J+6klUFynW2nr90VMMVEFqqfHSfvms9g5/2MZS8/be/ZqFk1Sen1URrDbw25nHt1hHzRBTv1cS8nxGWelmQSH07DYdk6mQIuYHwM2RGR1eycUf4yqttKSHGwlz352uWQC2lLVhv9qclbPLhlX95ml8pwQaOzYrm5UTPNx5zM0bKZuXKWLiYj7sT+GRZJ5ckxC/9YvFkHvMawZf6EfA7vIyvz8r+hSVCP6UucO/AbKJzaEHXJAxOymbf/1KTgzO7LJutL/27AVVlJ7wvpWi5LppuQ4KrvaY+iLmyZHHkl6eGjzf1pDbzRbwCjOmLbxr7Ri875Hlhtu9qEf/OY7/ctCM7DWu7ZOZrvTEHFo0W9BhzIwukMcpk5hlr6PiYi9tCc/sms93ELarpQ7C9HxljMvk1XMB8zoxuSFB21Z2qfdxXJ1+fWqjOk6uuNbbOn+ccUAdCxZcoyPt99VQWMHLpRAahKiXnLBcZDu0o2kIJTt13gb8v7UHr1WRDqT//71DzikMLA2Q6ylyNDz6X4rjdtF86pAXDh1YUeJ3P0FsW9+NdagR+lrJjTz15/xpo1cVPPOci3hR8QA1ZtiPe6IYKPlU+LQkOTMAPmrttoQWp+SiTj2aEPZ0tZvbrgTGeu3TScxv+IbHmwxGzQrq2LQr2eLmyb/ihef+aexUF9d25dddUrcqwqkh2+JOAtMPDbP1Nf6C1lzX22bOphMG+GhQLfvSIVL9b07hPwaFfIR69N3fgGiny/8Y/vbTptzLm34eM1sYCz8Zyb8cTof5Zdd7s4WplvHsyUE/Mn+RxLLAOaplrgbXbLNOUWvrifCbRc+qrhACfj2dMCoOfZQ6Gd9IhQ2hc/nx1IwWqWo1zkhVNhn/wa7ZYyM24dO3LxVmx8YmpW/nc6LwaDSGoWPtfiAntX+wt27t3dK9bsi3icUQlkdQa4Lti4eYG1eq3RgyYFSq/YKY6MhYUHQebkoJqr+ocVPpigDAHOt/MbIkplXU6uGSy0ZoRVSTAb1gXExV/5VOXQlx8xlD/6x3nqiYQvRQzeAUa+i83k5TsCp/eoMx5Q+XLHuJ7usa/z2VhF42EzVu9YN8GodhcRLn8X8e+W/WG3nn0qZPJSIasaWE4/dHGLtRQ9dmXMHDPlzK/f2QCn0n3k/C27/Rw7COtB/IgbN++Gv8/2q8/efEgv5ukHSFrmI2Zv2LncsYOoSLbqw76RfRbcwTocfB41p0sj/V2IZuExWW9X4Jur7yoW6snzT4mtSaTiw7n1yzYeu/nhB8wrhE33Ykbz6oBivmLP+GMjzy/f9cbxnx/+vrerVDz2L+v5M/AjGkxe9WsOMiRr4jK8Q0BKUVohm/cdL//i+EPXyoCu37rRmnyHC3BaLv7zdaM33zgcXzxqDM9gAFYGyWWazQxat84dv6bL4FBRmlS9DRpjv+wWd8jWmEu+ZjUKcNL3musufFMjtMeCvKfmc6CZzNVdXxIX6Uql6YFLXhxbvWrXhfvvC/j3kyCnoddnavDFzQPbpKuAIk1qGYR8v1nDaRfCzpx+v2Zbw0EmuPju2vkBCUDRaOCA0Q5aSlQ860d2Fs5Mrfoh5uRcmNZrXFg+Ts92spcenBpzPmSpzc3EC4knXYXmLk5Axnj2tk02ZekXAo++wfWds3xEtYMh6vWg8O2Kmxtz6iUgjZwxUAniFt7f5uW1MTqlSiBCSC/mCLXAylCUTYZNH62tTIa/v70RGr1/plUK9PG6R8daBc24/VBm8IjpI8i5DyOu75h093nh61sLDYVNCDvz/Iz+E05nAki9xxAXB301YlVhekopVVFGurbNgDWHuNlqkEqSrkVE+ju9KX/yeoclf0AOrzVi1Rb5Qg5gvD+y6WxjQ7Gcoidh5+M+03qPdB+rRWZmJ964HL7W6Un+/bd7B8k10BKpfH94wqAFdyDbnfEXZjfmTAVABArvRsJcTs04i5iaZH7cM7yXTzyDaDhsyliNytTHt2Kb3ZvFKDtuDuh/cX6Qz/ri/KP5ZMfTm4YoiKxmuOT96zwAjMy1hXeK8fV+EgPQ+tnrYb5dWOwdwnDbs9vF3pK2OSzp/lfGGGVeI4/rOONa8gy+MP1BE3pUvT/+7808Xkt+59/gZO/9favDA6yy7brg/bn09HOrtj+QHbN+ja0yJy10eVCC8sSAlTZdbZSxzS1wo7C/Bo/qPzeerWPrvsiioyxcUZDx/k0OhkRAnelfSO0GlmbpOVIh7FTYqXfre/YW0Ue12nv//iSVhk/tjztLvcLyiYP3vrnpbch/aKtW7xrac/HZWUsmDwlzUoTECgCivtvSVYD+6OuBo29krDyXr6qnQlVKzHsADGyMqezUvaPs/J7ID/M7OkMvcYXnwW9sbrUbIPded/Hyz0vWzw80N10Vs+dylru3zs+SEoZe+HLTVVAG9saQ0d08rq9YfHnCVTdVDOBknvaYdjoT22PFrVsbbVV/X8eXPCL4RqQ9FfAHMS6NNxgdcWhb/OpIJ15kiFUd5LV8EOCPuN3f3Kg/rU5hyObTJ4UpFERPNHQJPxIYu36gi1KdWwP/eBQwatjaB3KuRx+dnGFIEvmIcvMf3UwFoJOlfk101mRNwvmXFq+IZ8g6Hk+K9tDlt6hIwXl7rQmxzawGnK7HnmVBvbdsOwxAr+1BbpoiXRQ377LvsjgObay/e/V4ALswrZCnsaEqknLcb9eVNPDaaNbI6Z2VAchM5Yewkg+yEHXsbNSDTuUBZeuher96ZpCsscssY6Qo/MJSQHWeu9jbjpJz4uRioGg/d5H3wGbOuRAJ/P1haDwLmB95eMtTSzoeGuXPUcdlUC1mjlI6FXI+JGlT777NmrlY9iz4SglQ8wr0MKyOgEjGs7ZM3zwg+MqRZ2VOjjSxAuJygEvT0ysAXtNAiZO8KegJR3HK2XOb7GmFMrvAwW/1hRF2xY8SDllJz26I5qp3+R/z2eCXP8VRaDXBJl5n/Lrpq67viwtNKHNzludkROyKZQL91aH+TTnTioRNc7a8rKw+Ivf2C15l3uJ5nhiVwdMHECOuJT3NYjrJt2TgGqM6ZIYNOTzq07NMpovSrwCUmR7uNc/z2BfTRVdv7xjecBITtyIrLSWFwirLTr591H/NAy7RZoWnUT0NGq/J0oSTcQyg4e0/Qbe6ewLJyFMa5CBBReEVdTXxII0NiApKZFFjktyiO//YjzlToO157eAotWopmFHB4vlCCoGobTfKdOsexvBhOjIECk9/ViWjWTPFMEpOJ1K+LvuC6JjqNpgpwvj6OBUGnQcb8BSvSruXAoChdecWDIiLzFxWx1gZPE3cueaoSYBHP40/+C4YpfXUfQZkzWe6qIQcvRDyemtfq2a4CE7R+1Q6AN0Hda51EdlgcGcQ/DjtfSHbkSJOgCZukha3orACABkaCVP5JYHnQPsP79lweAkuexOy0mfjiXvpwoEAIJBQZcMi19CS0bXSAfty0j8Wsp3lmd+e8wJCxYFD9Zv0a6xvt89E/epAFrvva4U/5cXLSh0VeL6nsKLF00Xx8pq89qiqpAqudbLyupcnL3Hr4KuNOVMeyKM55oY1Bzj90dtCj3nq1tyGJmuS/f1TOhMAXUudpuceia0obl7UEt94tpKlOedp7LIVt0acGq5c36Fx82/4WDvt+6g69kTcPieVnyEcRkaW53uYdBaQG7AjuWoH/xzzLZ2nF4Es09xAD0vV6W5W/ySXXpBblPX4QTaQ76/GyMn8+i0u4QdQMVQqz87kEhU1VCnSiCdl+++8sjVvzPITc6xOLNK1njh91ry5bn1U/ruzwP/T1HvQKL08xqodPXTxeOJ2q4HNX9ep3tp/DZcCFCsgOmmYC9dcxL8Kg4V4j3id6zkZJ1z7ecZUadp7b3HtqyuPpec8ObRib4KYdPlpwNUDBvykIUjMyJWia7w0FzmEsDieD+GI9vniwWCgBpWJ7e4+qvJU5D0v2znycQfdtBs+oMZLj642pxLI8ppdevQyVCX+KraYmoQgfn4AhgXVJVotMRWFlD/ZtDiqTH7cpagg1jwjt7PzAxcM/teyttlxC2/6DHLal6I+LvTRyal6tZs5vEpnFQAKPhWwgHFNUMcuTCsCQMVAKt6Ik3l8aM37qHDXruE150NHGobyQgOpvY/CyFv+cy192otLJ0NOnT4bsm5yyPr100KvH5qi3/yZsih/mPoGQe4x3VXj0P6oYy+CBlpTJU5F2aQLBbxNu59aOUWtZmSpMuVeGs9DGxjzrFusQA0QjshTicNg138OsbJKvOvohSVsmQ4mauBBZmImw02p9gMG5985HFMFugbEXvWrngHPMHz3794EZhOa0z/G8XQgGZiq8nXQ7t0RnHv76G4Ga4Dxn+54iawJCSHqux8PWdjP1c732Lh+jLOPjk/sVLdIOG0b14nDGxtoEVeTOGVjA97dTI39QHdXk9hI6sNOO+KzPxv02rnJUV0T2bK6R9Q/QfMOzn7q+3PxSlbaQbfR+1IURhx9UM+ZAn7PwtpMZvf1JzFfmNbV81GYn2OelgJiv8F6zfVEMD3rUwaibagt+yvkxKqN2BMJHZq3IIzjuuvA5E5I+ql5iyOJUw/sdtHAYRV7qDUnOoUwOJ44l8UVcTcJauZuvry/oMInB2aN9Al1H9+z35NF+miU+pfRoIEld582Tmv/7stHE8qsbeUkTUbOwmuUQuTZkyuPLrm9yIjEf62cfPCf0EKgMMnLUk4SgWrwSrpKALxLeJHPsazT+mMVuhhQwcuMV9m4YdPGdzi0Z8/C7TaHJivm0H+JEPjmxyirlLTjDJc+3bkkpBAoTpnfn+9X8Dqu8wesnPtw49T1/a+tt1X7oz8MFNbEt2cp5YihYsve9WLkzJddeak6pd+0M5MGkanPDzqrSuYDxNWkXF+vkQpRYScX75h9b10/WkvmYiI/YtcHJPKqfvMMwfR8A88tkzY7nA1Ye2tG2Aglforc3Ajvf+4zdXzunJ7RueEADKQ4cM5wuesX9/tHzw8fr4kDnOyL6/Z/BVSXOYNEzxJoDLj4lmc3hxM5QG3KlbehzjUjDhBJZ5Cd4d4KgOs3yd1ttGLJ1SMVgDxo0mTXYRI/Fz/ByXeQByDrRRodMag77w6m5//AqipVD+njVfrN9HHacOlk5vsCNkD96d9GQ5dB6jZ1QsfdO68eeVpqO1Tsa6JqIAW77YcnxI4752NieHGsjS6cFhv5OBuoTwrebi8wbrEC1eC1Hdy6+r5LXGA58K6jiQK36GNi2aSrt+fr4chGTmaY8w+v3c9dN3/DxS0fnVesdTBZK7iIKkfE8N/s2HqPpD6+vHWAefLEod01KBCz+MOVbACU6+paeWf5JPdwTSI9/enV2+/KgdbUo9tthTaO0/EICb7db0ZUoJ364W621j06yWNZZQVfUuApkZfn6rWpdZOM3Iar7j0S7TbAeVw/pfLU1xUTom/Ma/Zke6Le1FP3K8r7zD/i4twpIc6vJ0W8rxFbk5CC/Y7gyffczmyw6hjlMLxPBxlG3uu45sw/Zacd9ztTDEwCV1VP64UUrFcuMjzrH+53ZP2wFbyoGM67ue9WFaB2ZN0O2lBr4gBOfYiX50AVLICUHLZtt78xO2qCqeW5ESbIuyuXEstItge2O/4cg4VLXoQcuJbJBqyvL0oAqIo/tGm9Jp5oMNFnUq2ZY8yvt2Jy+B/y79z4zHRW/vW2iZ378l0F0LHi9a0AMyvhExPoWum36GUUyXjMENqRcxfcrFmuveVKU5MZkyOvzOZFDNzMUCdd75xeTvZ9u2rRcIz8d3fOXy0Gqh5uRlJ864XSRjTyeMoYT5mos3Pr9eBHP+ydJG7psZpuJ1/d6bV8zd6IiJMPAKXTgOk7BdP1sZIKCCGaLr96rmT2qmOxUaFPeZGQ3sBJiljBgKmqnZc1/uHdXcHJMwMtlt/K9kxJfP2lDKuk283MQIkgyGHC2efYgFU7w+LO7rrO4L90llPRMbOx7qsiLCZOxWrCGKuLT5Kvn34F8+QVDe3mLFy/cbbVr6mERH2PC5+6n9m29VB4zL2Lyfz4TEbVqN9oUttvCyPbf/vVoHLPTeHXT30Asp2sJtEwLdNBpuucs5Fvug8NXj1mlfWboP7ioyuxNcmTcA1588By9bp9F2LCBNVEVjXoO2RsPxWJHH754+3bXgGS45oZXX4OQhCNPP1sAqbFBe18Mv/IYCor/x3/B03l8Qc2xte5Vp87avpAwXspvN6syOfkVQv9T0SfTARUfdsFu3YFutf6sSlc/HDXKv/kmsOqhOAA/hjwINPZtf0pyXjG4mFnl92Chyz26lbHiVV+fvQVyNhbdOCFx8WpTzMAdWwv9Ra1qpC8/d6ojZXzdl6+FPoGUDtZTaRCgruJEA3cptmejbl/+sA1/gm8on6fCet8A1bYtYcf/KE0k8asX8Zo8mS9rQE3gx/+cBxR09XEaHg8QzyaTAuvYet7kvfXcgFh9vrjg+6MD2pwHqvpEuCt0y9os/vG4Q839ZdX6mJp26WuCEQxHBcYMS5QRMpYNYdNFx02NZ09wCr0nro5fOpmMWJiIFsezEMONjxPNN2QhmyofYbUZ082sqehJMDQ+viEvfEJa24KDQUwivaHs5DDNYd4/SXJyJIm1RdTk3xwKgO8D8d6H25CRCTUwcH5SHC9k1itqXdZU2uOZHrtyEB2iEkHkjWesvvOlN2iVNTzSUJ8xGpDMl1yM6+x+qA5Xq6qacMUXW63dChbAFbZZvWlD6sbqKhuv+KE/YpWJIzSjmg0miAaTnTvHLD+9uH7351dlNtPMynbd324/wMr/80Den9a6z/XuZcWsexbNsF8aG8ldCY0CgrKn6bx3hnBYPw0w/Vr7hyOKxrlptJ+ln6AqH3WxD7X4G+AumFqpDAEQzdARUFBaR+IGO0iGK3+iDTom7QH0A1QUVBQ2il/6Vrh6AaoKCgo7Y6/1J+ioKCgtDtQf4qCgoIiHar9KYwUlbA/F3EgDZIFtf280Jc2/yfFRGkzUItCqY3Qn5Z/LnSMZgIAWbtpWbT4B9ltRXk+/cjD8rvZnHwmAnAYVXm8uSltqTmx4WLK9S+UTjGRTwlFPvGMShXZAFeFAdJaCLP9wGZuOFxwperXCS1L9fCB+AYLGvx36gG1KBTp8Nf191lFZfNPlX74ObOaAxcUMe9mIcv6tJUGbPbF54wingIFFSHfaP2NMP+nYUlb1AOS/bEsJIX1pQI7x1Wxz+9Zoga1KBSp8bf5U+RdQrnA9KFufRXnGeBIXDjnO7tcidB2jToOa6GFiUqFAUTopyJubb+/ETzBx0NzNgw4JRXe58pEbmPSJvWQ+bE8OpV3v4n03/V7X9SiUKTHX+dPC0sEy6DiZDwtyeaCgMWkQ9uuEwlh7UZpdC3gsKl4HfJ/0vghOQpWjheocaCmfqv+H6kH1KJQpEddf4q8ul8wIpqVxwYkGtGhr/zC7oRfO3/C3OcvS4++qnrJsz8I00GLNMaKNrET9lcKYgVaQ71BPU7Vot2ZNQeEtfPURlD4a0M/v/99x0dWLh3mL1WPwXTqQB43gOaqhan7E68mionkZ1Xe+MR4nM789INbKYyJMBgNdbLfGAVLnIQDi4BeVBmWUHHrKytdkARWBtddX3apPdVQ4rU0mkpB0mK2IoumkXCAtUl7YH2v2Hm/8nUhO6sMZvFPYDpok6dY01zUBaWonwXTd8/P2411naKxXKPVfge1KKlaFMxkXXtcdu4jI6VCkD4Rq6dBmmQn7/xzSSUx/qGpiurx48foMxXfAdCwUI8YXF0/nJJy9yMlaQCo9FKLsiUQW5eFpVSW86rn7EoLWKWCD1WlzKjbBelc9f29cPxbxuVERecHfqnZUAOBs7Loe8IZKaPV1htgMZIItAEQhJQxv5TX9AxhOONbxfazzB/T1Gar1nn8RBYT5sbEFO8vqpssDOcWI0RJmwUk623xrBuVtdPgMjivsmCJbVNcChIX83cqKQ5x9sAqqYr+zKy1QQuclVmxJYyDnakyuvnLi/4uUIuS0KI47OPn8g8X1EqfyU1NZ+T9vMFi/UOTFSWjQh5ArrhUCXK/MPIH4rUFahemV6bx/2OtjfHEVmchFeB66Wh3V/AxxsuUVu66VZEKI68eliaaKFkSkeyk71sEiur3UFxqRqCUM47eLHlQyb0ZWz5ZV74rTqxAqzUVDupxufei83fk83tnG6cq9qzZDI5WvSsR1MVccYMRRksOKwvBaZ9KNz5lMgD7wkvWVAdi7eZHRDFr54ftY0o2oWJksEglnZuHI/P384PEDyyyiyuWVxsutm8vqrMOXpUA6BWcbIxMJ8nWbJEgBUmL2YosmkT8AGsz7KHrAOXFHaCM9z8CkziAwziZzB7eH4+vzgJ+eTN/bTrvOSf4eShb1dwgslQ6xahFSc+imEX0SIEzVeyqENCXqASQgmLWq1xkYPUMiWb5h8YrylEXc+kdDIoqn5ZTtWk818V5lCzo2FBIjvw1m1qdhRRAXtdNB9I3pAzShoA2YW1RlftzLmAy731HLNU4NxJZfE1pchtsKF1416ji/ayrHK8zQTnjaRnSlSZOoIULzNfRTTCoB9GEGkOQIhWr1qBfJK9Jdqz5rKeokPohL6QUlBZx6Aix1mbJIoqpWUtJCmmunXy3+p0psQOLyOek8hSB5EBntR1GjQfm7JLKk29YFbVesFA1ZN0NBeGMZCmILWbrs2gScfXAldweICU1Yi9tTE8l2s3k7y8RkJ3FqQJ4fHUWGIXqDCAF3u1uye6vYkuBWpRExWwyC17fGgg9c0UJpwghm6lhdFUJfbvWiDbDHkRWlFE3Eu0dvRSwrqdzx5phkfKq6Dz+F6pGlC54qWTRajjsOBF+GdLUwmGec2HAzaAjPF2ThJ2Z0rLJQWV1JbmZlQDIihNQlLbqjYN8+1R24HllYiGnhMN/QrDC2w8jIvbtqFvMpraWk1SB9BxBVhjiSF2RfopdVnUqoZJe6wzVmDShxvolSEF8MVudResQazAN7AHCYzWJ4CUDwEwuAwFiJ362FahFSZIFICjLenWmb0iDWXnla06W+1OJ9qaUCb0pJsLgtvn20BCyuqw9hR5BB2/fMgq7kxkf6J/4p3Eu3as7+3/eBcFwnqg4F4GBcBxCsHMmqNlGDKuriqlzCYTVJkog0CYUfvjufrVKsN07pCyPJQMkv4Tb9F5SdYopDbDV/ZvfmEILitncLFpLS+wBwtc8622+E4JIUIuSFAxuxCgN/fflp9/Q7+dwWeXMm0+YN1/QF01WmaICScc/4PGjjLERvNg/p+JhCT4vic0/qUEdLnzf1R5cEATJi/CnyJd0gboAa8gLFbDYLlSQwHP6FJnlExV7N3z7yBEn0BbAr14LbAJPCvBUHirLH2E5HZq7u6iJS+oWU2IwWEz1rp8MBK7zDdRBDQuyuABhXv7KHSSib0XuqHTPV0lE2mJTkKiYrcuiRg6ChObBZje+24vIehBrMBKDrR7gQyp4cVNbNcw1oBYlYRbCMmCMTWmBpjQuk5OQXBoQV5nPZh6MZ4wcS5KTjj1Anc2oBs9LUgHrdHxJGT8ahawtyerC8kjP5FoODt+33nypojzmKyzI/VaxJ0lwW+UpwxQhnpxzN/zpR2xApy8MAzN6k7rTMAiLm57HoneSm94BA4kVaJPiEITPHpuTnM3qpo2jIDC98UZWRDElBiOD64AHn9jg+4fSc52oJjg4NYfbw4JqTID0TSnaiWWZAHlwNX9JHtWxE14FD5hMOKcMWJiRtcW/QBCfgsTFbHkWQrAkvBYepLJBwbvSU1pUMzyclsM14xdTbD1IzR7k5Xna8Fwp69iDCllDnAwMf85m6/Sm9W+T2faoRUkIq7Bs5X1OZz2ikRJeiwzJyuM1cSCfA1gMmL9JjJT8A06ePKVj6bpvSFaKYOdyqqxHp5pr24MLgjBW9eLTtw8KvX59jZ/mSOWP7AJIr4+ST2b+rm8Iq4B+6MavURQ1FnlyBwJBvEAbgOlmRqJkVNEB+9zl/HNNiooopsQQCGONsLFJXMBk7L8k3NYT59lV1lgZIqjKbbVhecUxKgD30YuSRy9+XoP31SdrS7BfrLgUmlHMlmZRc0QkuHbB3HsH86Kmw5frFFNsPUjJHqCOXUiaT8tzAMhK/uFbvbEexllPrr8E27S2GtSiJKUsvyr+Kyv+K73uaciqh4xgW0Ep2QOEHWxFVvhG/yE46m4pW2v6bXtwQYAsvOlEBdLwjsjr75zCSpjFb0+wXXUp7gPk7JSrf/0G4fGT3TRNk8tOJ1W9yOcIXvNBqqrEAUo1m5WLE2gDlAyVTjiX7k+oTCjgCqdIY/AYdQW8UWe88B2l2GJKDMZ8iMp67I+Dycw8XvBEwHXXIxtV90YhA3OV6A7008/psRmsTOF2bjiMthqBjEj4gkJMCmKL2fosfhbTwk51Jab46HtWIZffperckdS5jmGKrAdp2QNRjbbbCdn6uPJlCQwLSqqlKtO5rXpzqEVJaFEUTbmFPekxaYwPwkmsGIy2poxDb5p7l+oBG2nZA0VLbqoqfXcBz3VR5hnjakfn7cEFVc/nJyhT/ceLWx4HgzEzk+f9tVxACmAcJmk7iPwW0jWS32EkUgHxxcTgpnhoT5FAD97Nc7JTdbJr/FuaOmX+CMp8CdIRRZMpiCmmNLKoyYmAH+OgNqaJGm+iHpq0B1l9lWe+tY7xBL/52n6N5aBjonDQRKFJNVsDalGg9RZFUiS52/H+mhRq2j9IWFE8sWmixaSSRSso/9t+v4+CgoLSPkE+o/4UBQUFRSpQUH+KgoKCIg0gA9SfoqC0EEjcSyek8Xm7KP9Z/gfyEyLujhRs8QAAAABJRU5ErkJggg==" alt="" name="图像3" width="453" height="47" align="left" border="0" />

执行上述命令后,在GOPATH/bin下可以看到fabric-ca-server和fabric-ca-client已经正常启动了。

启动fabric-ca-server:

fabric-ca-server
start -b admin:adminpw

其中-b参数提供了节点登记过程的引导节点,后面登记节点时需要用到。

使用命令fabric-ca-server start -b admin:adminpw --cacount 2启动了一个包含了2个CA服务簇的CA server

启动CA server后,在服务器根目录下分别新建了一个ca1和ca2两个文件夹,启动过程中服务器首先通过ecdsa SHA256算法生成密钥,然后编码生成CSR(证书签名请求,CSR签名请求中包含了请求用户的城市、公司等基本信息),CA服务器对CSR中的基本信息通过数字签名制作数字证书并颁发给申请者。上图可以看出最终生成的CA证书最终存储在ca1和ca2文件夹下的ca-cert.pem文件里。生成数字证书后,CA服务器会将证书信息写入到数据库或LDAP目录服务器中。上图中默认存放在ca1和ca2文件夹下的sqlite3 db中。

上图为执行服务器启动后生成的目录结构,其中fabric-ca-config.yaml是启动过程中所使用的配置文件。

切换到ca1文件夹下,通过openssl命令查看证书内容:

如图可以看到,数字证书包含了签名算法信息、申请者基本信息、申请者公钥信息等。
打开存储发放证书信息的sqlite3 数据库:


可以看到数据库中有3个表,其中users表中目前只有启动时设定的引导节点,还没有注册其他节点。certificates表中目前没有任何发放证书记录。
现在我们尝试使用fabric-ca先登记引导节点,命令如下:
fabric-ca-client enroll -u http://admin:adminpw@localhost:7054
这里admin和adminpw即为fabric-ca-server启动时设置的引导节点登记id和密码
client执行结果如下:

server端接收到登记请求:

在ca-client目录下生成的目录结构如下:

其中msp/signcerts目录下存储的为client的数字证书,cacerts目录下存储的为证书链信息。
回到ca-server目录下,打开sqlite3数据库,可以看到刚刚颁发的数字证书已经记录在数据库里了。

接下来使用fabric-ca-client注册一个新的节点,这一步就是为fabric中的peer、user角色进行注册并登记的过程了,注册的命令为:
fabric-ca-client register --id.name admin2 --id.type user --id.affiliation org1.department1 --id.attrs 'hf.Revoker=true,foo=bar'
这里有两点需要注意:
1、--id.type参数必须是是server端配置文件里hf.Registrar.Roles属性值里的一个
打开fabric-ca-server的配置文件

其中通过hf.Registrar.Roles的属性值可以看出,客户端可以注册的类型有client,user,peer,validator和auditor
2、--id.affiliation这个属性表示:被注册对象的从属关系参数一定要归属于预先配置的组织属性。换句话说,被注册对象的affiliation参数一定要是预先配置的affiliation参数的一个前缀。例如,假设预先配置的组织关系为:“a.b.c”,那么新注册的对象的affiliation属性可以是“a.b.c”,也可以是“a.b”,但“a.c”就不能通过注册。
执行节点注册命令后,注册了一个user结点:
client端执行结果:

这里分配的password需要记住,后面在登记该节点时会用到。
server端接收到请求

登记刚刚注册过的admin2节点,登记命令为:
fabric-ca-client enroll -u http://admin2:wtLafXUdYMOa@localhost:7054 -M $FABRIC_CA_CLIENT_HOME/msp
这里登记时使用的erollId和密码就是上边注册过程中的节点名称和返回的密码信息。这册过程中也是可以指定密码的。
执行登记命令,结果如下:

打开fabric-ca-server的sqlite数据库

查看用户信息,其中有一个client节点admin和一个user节点admin2。其中admin是一个intermediateCA。
打开数据库表certificates,这是可以看到给admin2所颁发的证书已经记录了。

重新登记节点,在节点授权即将到期是需要重新登记节点信息。重新登记的命令为:
fabric-ca-client reenroll

重新登记过程重新发送签名证书请求,获取新的数字证书。
打开server端数据库,可以看到两条颁发给节点admin2的证书记录,两个证书颁发的时间不一样。

注销证书,注销证书的命令为:fabric-ca-client revoke -e <enrollment_id> -r <reason>
其中reason参数可以为:
1. keycompromise
2. cacompromise
3. affiliationchange
4. superseded
5. cessationofoperation
6. certificatehold
7. removefromcrl
8. privilegewithdrawn
9. aacompromise
10. unspecified
下面我们注销掉刚刚登记的admin2节点试一下,执行命令fabric-ca-client revoke -e admin2:
执行结果如下:

打开server端数据库:
可以看出admin2节点的证书状态已经改为注销了。

注册一个中间CA,具体命令为:fabric-ca-server start -b admin1:adminpw1 -u http://admin:adminpw@localhost:7054
上述命令重新启动了一个CA服务器,作为引导节点CA服务器下的中间CA,执行结果如下:

服务端执行结果:

打开ca-chain.pem查看刚刚登记的中间CA服务器证书链:

可以看到证书链中包含上级CA证书和自己的证书信息。
尝试在刚刚建立的CA上注册登记一个节点,注册一个节点admin2的命令同上:
首先登记节点:

fabric-ca-client register --id.name admin2 --id.type user --id.affiliation org1.department1 --id.attrs 'hf.Revoker=true,foo=bar'

注册的结果已经记录在数据库中:

最后登记节点,执行命令:fabric-ca-client enroll -u http://admin2:OvcuMeebLLty@localhost:7055 -M $FABRIC_CA_CLIENT_HOME/msp

进入刚刚登记的节点目录,生成如下目录结构:

打开cacerts下面的证书链文件,可以看到刚刚登记的节点证书链包含两个中间CA的数字证书信息,在验证由该个树形CA服务器中一个中间CA节点所颁发的数字证书是否真实有效时,会按照证书链自下向上进行验证,直至到达根证书。

如果区块链网络中有多个链,每个链为了保证各自的隐私性存在各自的CA服务器,那么当一个用户同时拥有两个链的权限时,怎样同时具备验证两个链上的节点所拥有的CA证书呢?按照上边证书链的原则,一个节点注册登记到一个中间CA后,应该只能拥有该条CA服务器链上的证书链。这里为了解决这个问题,有一种方法是交叉认证,在fabric-ca中也有类似的操作方法,即通过Restful接口获取另外一个CA服务器上的证书链。
具体命令为:fabric-ca-client getcacert -u http://localhost:7055 -M $FABRIC_CA_CLIENT_HOME/msp
这里我们新建一个单独运行的CA服务器:

查看该根服务器的数字证书:

接下来,我们在上文登记的节点admin2上运行获取刚刚建立的CA服务器证书链命令:

执行命令结束后,查看admin2节点所对应的证书链目录:

可以看到启动在端口7056上的CA服务器所对应的证书链已经同步过来了。

Fabric-ca这个模块详细描述了CA工作过程中使用fabric-ca-client和sdk方式的方法,其中包括配置LDAP以及其他数据库的配置方法在文中也有说明,sdk方式的restful操作接口,可以查看fabric-ca源码根目录下的swagger.json文件。使用中需要根据区块链网络的特性,使用CA签发的数字证书进行认证、加密传输数据、授权用户、管理用户证书。

Hyperledger Fabric-CA学习的更多相关文章

  1. Hyperledger Fabric CA的命令行用法

    介绍Hyperledger Fabric CA的命令行方式简单用法 Hyperledger Fabric CA由server和client两部分组成. 设置两个环境变量 export FABRIC_C ...

  2. Hyperledger Fabric CA User’s Guide——概述(二)

    概述 下面的图表说明了如何将Hyperledger Fabric CA与总体的Hyperledger Fabric结构相匹配. 有两种方式与一种Hyperledger Fabric CA服务器进行交互 ...

  3. Hyperledger Fabric CA User’s Guide——CA用户指南(一)

    Fabric CA用户指南 Hyperledger Fabric CA是一种用于Hyperledger Fabric的认证机构(CA). 它提供了如下特性: 登记身份(注册ID),或者连接到作为用户注 ...

  4. Hyperledger Fabric CA User’s Guide——开始(三)

    Fabric CA User’s Guide——开始 先决条件 安装Go 1.9+ 设置正确的GOPATH环境变量 安装了libtool和libtdhl-dev包 下面是在Ubuntu上安装libto ...

  5. Hyperledger Fabric CA User’s Guide——配置设置(四)

    配置设置 Fabric CA提供了三种方案去配置Fabric CA服务端和客户端,优先顺序是: CLI flags(标识) 环境变量 配置文件 在本文档的其余部分中,我们将对配置文件进行更改.但是,可 ...

  6. HyperLedger Fabric ca 1.2 正式环境部署

    生成一个根CA(RootCA),在根CA下3个中间CA(IntermediaCA). 1. 运行和配置RootCA服务#cd /opt/gopath/src/github.com/hyperledge ...

  7. Hyperledger Fabric Membership Service Providers (MSP)——成员服务

    Membership Service Providers (MSP) 本文将介绍有关MSPs的设置和最佳实践的详细方案. Membership Service Providers (MSP)是一个旨在 ...

  8. 区块链Hyperledger Fabric 学习记录(一)开发环境搭建(ubuntu16.04/ubuntu18.04)

    目录 Fabric开发环境搭建 更新说明 教程环境及软件版本 Docker 安装Docker 配置用户组 配置Aliyun Docker加速器 安装docker-compose Go 下载源码 安装源 ...

  9. HyperLedger Fabric 学习思路分享

    HyperLedger Fabric 学习思路分享 HyperLedger Fabric最初是由Digital Asset和IBM公司贡献的.由Linux基金会主办的一个超级账本项目,它是一个目前非常 ...

  10. [转帖]Hyperledger Fabric 学习一:简介

    Hyperledger Fabric 学习一:简介 https://www.jianshu.com/p/f971858b70f3?utm_campaign=maleskine&utm_cont ...

随机推荐

  1. Xilinx Vivado的使用详细介绍(1):创建工程、编写代码、行为仿真

    Xilinx Vivado的使用详细介绍(1):创建工程.编写代码.行为仿真 Author:zhangxianhe 新建工程 打开Vivado软件,直接在欢迎界面点击Create New Projec ...

  2. python __getattra__()

    官网解释: object.__getattr__(self, name) Called when an attribute lookup has not found the attribute in ...

  3. Java8:Lambda表达式增强版Comparator和排序

    1.概述 在这篇教程里,我们将要去了解下即将到来的JDK 8(译注,现在JDK 8已经发布了)中的Lambda表达式——特别是怎样使用它来编写Comparator和对集合(Collection)进行排 ...

  4. 从mysql向HBase+Phoenix迁移数据的心得总结

    * 转载请注明出处 - yosql473 - 格物致知,经世致用 mysql -> HBase + Phoenix 1.总体方案有哪些? 1)通过Sqoop直接从服务器(JDBC方式)抽取数据到 ...

  5. Adb工具的简单使用

    Adb全称为Android Debug Bridge adb就是连接android手机与PC机的桥梁,可以在pc端对手机进行全面的操作 借助adb工具,可以管理设备或者手机模拟器的状态,进行手机操作, ...

  6. 转载&修改:赶集mysql军规

    个人认为以下军规主要为了适应海量数据场景,对于业务复杂性系统并一定完全按照此军规   一,核心军规 不在数据库做计算,cpu计算务必移至业务层 控制单表数据量,单表记录控制在千万级 控制列数量,字段数 ...

  7. PHP以xml形式获取POST数据

    <?php namespace Home\Controller; use Think\Controller; class UrlController extends Controller { / ...

  8. css过渡

    过渡transition是一个复合属性 例子1 .example{ width: 200px; height: 100px; background-color: blanchedalmond; tra ...

  9. exe所在路径

    procedure TForm1.btn1Click(Sender: TObject); begin //完整路径 E:\UsrSoft\Desktop\FileNameDemo\Project1.e ...

  10. javascript高级程序设计第3版——第4章 变量作用域以及内存