티스토리 뷰

cryptogen tool usage

 

Hyperledger Fabric은 커미셔닝을 위해 공개 키 인프라를 사용한다. 


인증서는 네트워크 내의 모든 ID(Identity)에 발급된다.  

 

Identity는 참가자(participants)만을 가리키는 것은 아니다.

identity는 인프라 구성요소인 오더러(orderer), 피어(peer) 와 같은 인프라 구성요소를 나타내며, 

네트워크의 일부인 member나 organizations에게도 발급된다. 

=> 각 ID 유형에 대하여 인증서가 발급된다

 

 

CA

인증서(certificates)는 인증기관(certification authorities, CA)에서 관리된다. 

인증기관은 참가자와 네트워크 구성요소인 orderer, peer에게 인증서를 발급한다. 

 

여기서 집중해야할 한가지 중요한 사항은 ID관리가 중앙집중화되어 있지 않다는 것이다. 

즉, 인증서 발급을 담당하는 단일 개체가 없다는 것이다. 

 

구성원은 조직 내에서 ID를 관리한다. 

 

 

How to generate crypto

 

cryptogen은 테스트, 개발 환경에서 사용된다.

 

production 환경에서는 CA가 인증서를 발급한다. 

 

cryptogen은 yaml파일로 인증서와 키스토어를 생성한다. 

 

개발자가 참가자나 조직, orderer, peer와 같은 인프라 구성요소들에 대한 구성정보를 crypto-config.yaml 파일에  작성하고, 

 

yaml 파일과 cryptogen tool을 사용하여 로컬폴더에 crypto material (인증서, 키스토어파일)을 생성한다. 

 

 

cryptogen command --flags <args>

 

도움말

cryptogen help
cryptogen command --help
cryptogen help command

 

버전확인

cryptogen version

 

기본 구성 템플릿

cryptogen showtemplate
cryptogen showtemplate > crypto-config.yaml

cypto-config.yaml 파일을 수정하면됨. 

 

 

Crypto material 생성

cryptogen generate --config=<<config file path>>

cryptogen generate --config=./crypto-config.yaml

cryptogen generate --config=./crypto-config.yaml --output=first-crypto

--config 옵션에 작성한 yaml 파일의 경로를 입력

--output 옵션을 사용하지 않으면 default로 crypto-config 로 생성

 

 

기존 설정에 구성요소 추가

cryptogen extend --config=<<extension config yaml file>> --input=<<input folder>>

cryptogen extend --config=./crypto-config.addpeer.yaml --input=./crypto-config

구성요소를 추가할 필요가 있을 경우, 처음부터 다시  yaml파일을 작성하는 것이 아니라 추가되는 부분만 yaml파일로 작성하여 기존설정에 구성요소를 추가할 수 있음

 


crypto-config.yaml

두 섹션으로 구성

 

OrdererOrgs:  Orderer를 관리하는 Organization list

OrdererOrgs:
  # ---------------------------------------------------------------------------
  # Orderer
  # ---------------------------------------------------------------------------
  - Name: Orderer
    Domain: example.com
    EnableNodeOUs: false

    # ---------------------------------------------------------------------------
    # "Specs" - See PeerOrgs below for complete description
    # ---------------------------------------------------------------------------
    Specs:
      - Hostname: orderer

 

PeerOrgs: Peer를 관리하는 Organization의 Member list

PeerOrgs:
  # ---------------------------------------------------------------------------
  # Org1
  # ---------------------------------------------------------------------------
  - Name: Org1
    Domain: org1.example.com
    EnableNodeOUs: false

    # ---------------------------------------------------------------------------
    # "CA"
    # ---------------------------------------------------------------------------
    # Uncomment this section to enable the explicit definition of the CA for this
    # organization.  This entry is a Spec.  See "Specs" section below for details.
    # ---------------------------------------------------------------------------
    # CA:
    #    Hostname: ca # implicitly ca.org1.example.com
    #    Country: US
    #    Province: California
    #    Locality: San Francisco
    #    OrganizationalUnit: Hyperledger Fabric
    #    StreetAddress: address for org # default nil
    #    PostalCode: postalCode for org # default nil

    # ---------------------------------------------------------------------------
    # "Specs"
    # ---------------------------------------------------------------------------
    # Uncomment this section to enable the explicit definition of hosts in your
    # configuration.  Most users will want to use Template, below
    #
    # Specs is an array of Spec entries.  Each Spec entry consists of two fields:
    #   - Hostname:   (Required) The desired hostname, sans the domain.
    #   - CommonName: (Optional) Specifies the template or explicit override for
    #                 the CN.  By default, this is the template:
    #
    #                              "{{.Hostname}}.{{.Domain}}"
    #
    #                 which obtains its values from the Spec.Hostname and
    #                 Org.Domain, respectively.
    #   - SANS:       (Optional) Specifies one or more Subject Alternative Names
    #                 to be set in the resulting x509. Accepts template
    #                 variables {{.Hostname}}, {{.Domain}}, {{.CommonName}}. IP
    #                 addresses provided here will be properly recognized. Other
    #                 values will be taken as DNS names.
    #                 NOTE: Two implicit entries are created for you:
    #                     - {{ .CommonName }}
    #                     - {{ .Hostname }}
    # ---------------------------------------------------------------------------
    # Specs:
    #   - Hostname: foo # implicitly "foo.org1.example.com"
    #     CommonName: foo27.org5.example.com # overrides Hostname-based FQDN set above
    #     SANS:
    #       - "bar.{{.Domain}}"
    #       - "altfoo.{{.Domain}}"
    #       - "{{.Hostname}}.org6.net"
    #       - 172.16.10.31
    #   - Hostname: bar
    #   - Hostname: baz

    # ---------------------------------------------------------------------------
    # "Template"
    # ---------------------------------------------------------------------------
    # Allows for the definition of 1 or more hosts that are created sequentially
    # from a template. By default, this looks like "peer%d" from 0 to Count-1.
    # You may override the number of nodes (Count), the starting index (Start)
    # or the template used to construct the name (Hostname).
    #
    # Note: Template and Specs are not mutually exclusive.  You may define both
    # sections and the aggregate nodes will be created for you.  Take care with
    # name collisions
    # ---------------------------------------------------------------------------
    Template:
      Count: 1
      # Start: 5
      # Hostname: {{.Prefix}}{{.Index}} # default
      # SANS:
      #   - "{{.Hostname}}.alt.{{.Domain}}"

    # ---------------------------------------------------------------------------
    # "Users"
    # ---------------------------------------------------------------------------
    # Count: The number of user accounts _in addition_ to Admin
    # ---------------------------------------------------------------------------
    Users:
      Count: 1

하나의 피어를 정의하려면 Specs 사용

Template를 사용하여 여러개의 피어를 정의할 수 있음. 

Peer에는 Admin user가 default로 생성됨. 

 

 

 


msp tls 폴더가 중요..  뭔지 잘 모르겠음

 

 

signcerts 폴더에는 Pulic Key 

 

keystore 폴더에는 Private Key

 

admincerts 폴더에는 Admin Public Key

 

tls 폴더에는,, Transport layer Security enabled 일때, 사용해야하는 certificate와 keystore 파일 

 

 

 

 

 

 

 

 

 

 

 

 

 

ㅍㅍ

Admin

- Start / Stop peer

- Install / Start chaincode

- Config changes

 

User

- Invoke chaincode

- Query chaincode

 

 

 

 

 

 

이렇게 생성된 crypto-config 폴더를 공유하던지 아니면 MSP 폴더만 따로 각 실행환경에 복사하던지 하면 됨. 

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함