티스토리 뷰
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 폴더만 따로 각 실행환경에 복사하던지 하면 됨.
'블록체인' 카테고리의 다른 글
블록체인 확장성 확보를 위한 기존 기술 분석 (1) | 2022.04.20 |
---|---|
블록체인 기술의 현재 (1) | 2022.04.20 |
블록체인의 특징 및 중요성 (0) | 2022.04.18 |
IPFS 실습 (0) | 2022.04.02 |
Hyperledger Fabric Tutorial3: Running a Fabric Application (0) | 2022.01.24 |
- Total
- Today
- Yesterday
- 서버점검
- 다이나믹프로그래밍
- 서버개발
- 그래프
- node.js
- 은둔청년체험
- 롱베케이션
- 면접질문
- 개발자면접
- 동적프로그래밍
- 투포인터
- 로드나인
- 면접비
- create databases;
- create db
- DB 생성
- BFS
- MySQL
- MOD
- 최소공통조상
- 다이나밍프로그래밍
- 투포인터 연습
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |