搭建基於hyperledger fabric的聯盟社區(八) --Fabric證書解析
阿新 • • 發佈:2017-11-21
一個 憑證 密鑰 設計 根證書 私鑰 文件 ons crt
查看證書文件(實際上,數字證書就是經過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包解析證書中的信息。
一.證書目錄解析
通過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:第二個用戶的信息,結構類似(省略)二.證書內容解析
搭建基於hyperledger fabric的聯盟社區(八) --Fabric證書解析