MSPについての個人的な理解

Hyperledger Fabric 入門 – Hyperledger Fabricとは、Hyperledger Fabricのコンポーネントの説明  – | SIOS Tech. Lab

個人的に一番躓いた"MSP"という概念のコンポーネント。

私個人の理解についてまとめる。

TL;DR

MSPは「この認証局が発行した証明書で、このOU属性の人はHyperledger Fabric上ではこのロールになる。通信ではこの認証局が発行した証明書で公開鍵暗号される。」がまとまったコンポーネントで、チャネル設定のときに使われる。

Local MSPは「この認証局が発行した証明書で、このOU属性の人はHyperledger Fabric上ではこのロールになる。通信ではこの認証局が発行した証明書で公開鍵暗号される。このコンポーネントが使う証明書のペアはこれ。」がまとまったコンポーネントで、Client/Peer/Ordererがチャネルに接続する時に使われる。

 

MSPとは

公式にはしっかりとページが用意されていて、説明も書いてある。ただ「メンバーシップ操作の抽象化を提供するHyperledger Fabricのコンポーネント」なんて言われてサクっと理解できるわけもない。

Membership Service Providers (MSP) — hyperledger-fabricdocs main ドキュメント

なので、結局何で、どこで使われて、何で構成されているのかに注目してメモを残す。

 

MSP

認証局が発行する電子証明書をブロックチェーン上のロールと紐づけていおり、"組織"として1つだけ持つことが推奨されている。

構成要素としては以下(単純化のため中間証明書は除外)

  • config.yaml
  • cacerts
  • tlscacerts

cacertsは、「電子証明書を発行する認証局」の認証局自体の証明書になる。

tlscacertsは、「公開鍵暗号をする時に利用される電子証明書を発行する認証局」の認証局自体の証明書になる。

そのうえで、config.yamlには以下の情報を書く。

NodeOUs:
  Enable: true
  # 利用したいアイデンティティ分類ごとに、OU識別子を指定します。
  # オプションで、特定のCAまたはあなたの組織の中間証明書によってOU識別子が発行されなければならないことを設定できます。
  # しかし、特定の証明書を設定しないのが一般的な使い方です。
  # 特定の証明書を設定しないことで、すべての証明書を再発行することなく、あとから他のCAまたは中間証明書を追加できます。
  # このため、以下のサンプルでは、証明書設定用 (Certificate) フィールドをコメントアウトしています。
  ClientOUIdentifier:
    # Certificate: "cacerts/cacert.pem"
    OrganizationalUnitIdentifier: "client"
  AdminOUIdentifier:
    # Certificate: "cacerts/cacert.pem"
    OrganizationalUnitIdentifier: "admin"
  PeerOUIdentifier:
    # Certificate: "cacerts/cacert.pem"
    OrganizationalUnitIdentifier: "peer"
  OrdererOUIdentifier:
    # Certificate: "cacerts/cacert.pem"
    OrganizationalUnitIdentifier: "orderer"

ここには、OU属性がXXXXの証明書を持つコンポーネントをXXXXと識別する。という情報が書かれている。

一番上だと「OU属性がClientの証明書を持つコンポーネントはClientと識別する。」になる。

 

ここまで来て、MSPが何かをまとめると

「この認証局が発行した証明書で、このOU属性の人はHyperledger Fabric上ではこのロールになる。通信ではこの認証局が発行した証明書で公開鍵暗号される。」

の情報がまとまっているコンポーネントになる。

これらは、チャネル設定に持つ情報になる。

 

Local MSP

Local MSPはMSPとは全く異なる。持っている情報は似ているがClient/Peer/Ordererが使う証明書が梱包されている。

構成要素としては以下(単純化のため中間証明書は除外)

  • config.yaml
  • cacerts
  • tlscacerts
  • keystore
  • signcerts

MSPにkeystoreとsigncertsを追加したのがLocal MSPになる。MSP + コンポーネントの証明書がLocal MSPという理解で問題ないと思われる。

Local MSPは「この認証局が発行した証明書で、このOU属性の人はHyperledger Fabric上ではこのロールになる。通信ではこの認証局が発行した証明書で公開鍵暗号される。このコンポーネントが使う証明書のペアはこれ。」

の情報がまとまっているコンポーネントになる。

これらは、各コンポーネントが参照するだけで、チャネル設定等には影響しない。

 

Copyright (C) 2018-2022 akagoma. All Rights Reserved.