一.證書目錄解析
經過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包解析證書中的信息。