Fabricサービス中間CAの開発プロセス

12324 ワード

fabricサービス中間CAの開発プロセス


fabric中間CAサービスの実現


プロセス

  • intermediate CA簡単紹介
  • ルートCAサーバコンテナcouter 1
  • を作成
  • 中間CA指向ルートCA
  • を作成する
  • init CAプロファイル、中間CAコンテナ
  • を生成
  • 登録開始等の流れ
  • .
  • 検証テスト
  • 1.fabric-ca-server root CAとintermediate CAを使用

  • ルートCA
  • を起動する
    fabric-ca-server start -b admin:adminpw -p 7054
    

    ルートCAがポート7054で起動するとする.
  • 中間CA
  • を起動する
    fabric-ca-server start -b admin:adminpw -p 7064 -u http://admin:adminpw@localhost:7054
    

    中間CAがポート7064で起動するとする.パラメータ-uは、中間CAが起動していることを示し、-uの値は上位ルートCAのアドレスを指定する
  • ルートCAと中間CAによって生成されたプロファイル
  • を表示する
     rootca
    ├── ca-cert.pem
    ├── fabric-ca-server-config.yaml
    ├── fabric-ca-server.db
    └── msp
        └── keystore
            └── 8bf83d802f3428e25e66c2131d4d09a428ed675b0bb5adf0b18757a03a653cbd_sk
    immediateca
    ├── ca-cert.pem
    ├── ca-chain.pem
    ├── fabric-ca-server-config.yaml
    ├── fabric-ca-server.db
    └── msp
        ├── cacerts
        ├── keystore
        │   └── 9c669833b37097ec194fe16b68bb7e9a1b30ae36aa34ed7e81483032681f2043_sk
        └── signcerts
    

    中間CAはルートCAより一つ多いca-chain.pem証明書ファイル.ファイルを開くpemを見てみると、その内容は2つの証明書(root CAとintermediate CA)の内容、すなわち証明書チェーンを含んでいます.
     <content of intermediateca/ca-cert.pem>
    <content of rootca/ca-cert.pem>
    

    4 . 彼らの検証関係をもう一度見てみましょう
    $ openssl verify -verbose -CAfile rootca/ca-cert.pem intermediateca/ca-cert.pem 
    immediateca/ca-cert.pem: OK
    $ openssl verify -verbose -CAfile rootca/ca-cert.pem intermediateca/ca-chain.pem 
    immediateca/ca-chain.pem: OK
    $ openssl verify -verbose -CAfile intermediateca/ca-chain.pem intermediateca/ca-cert.pem
    intermediate/ca-cert.pem: OK
    $ openssl verify -verbose -CAfile intermediateca/ca-cert.pem intermediateca/ca-chain.pem
    immediateca/ca-chain.pem: C = US, ST = North Carolina, O = Hyperledger, OU = client, CN = admin
    error 20 at 0 depth lookup:unable to get local issuer certificate
    

    rootノードのルート証明書を見ることができ、intermediateノードのルート証明書を検証することができます.すなわちintermediateノードのルート証明書がrootノードによって発行されたことを検証し、証明書チェーン関係を形成する.
    5 . Intermediate CAへの登録(register)と登録(enroll)ユーザー
    $ fabric-ca-client enroll --home admin --url http://admin:adminpw@localhost:7064
    $ fabric-ca-client register --home admin --id.name tester --id.secret testpasswd --id.type user
    $ fabric-ca-client enroll --home tester --url http://tester:testpasswd@localhost:7064
    

    testerという名前のユーザーが登録されています.要求ポートIPが間違っていないことに注意
    treeディレクトリの表示
    $ tree tester/msp
    tester/msp
    ├── cacerts
    │   └── localhost-7064.pem
    ├── intermediatecerts
    │   └── localhost-7064.pem
    ├── keystore
    │   └── b9d4aeed6a4c261e7fd183bafbe11b369414d4873875c885bac374f76fe25b70_sk
    └── signcerts
        └── cert.pem
    

    以下に、これらのファイルとroot CA/intermediate CAのプロファイルとの等しい関係を列挙する.以下に、これらのファイルとroot CA/intermediate CAのプロファイルとの等しい関係を列挙する.以下に、これらのファイルとroot CA/intermediate CAのプロファイルとの等しい関係を列挙する.
    msp/cacerts/localhost-7064.pem            ==   rootca/ca-cert.pem
    msp/intermediatecerts/localhost-7064.pem  ==   intermediateca/ca-cert.pem
    

    2点:
  • mspのcacerts証明書はroot CAのルート証明書です.
  • mspのintermediatecerts証明書はintermediate CAのルート証明書です.

  • ユーザーの証明書を見てみましょう:msp/signentrts/cert.pem
    openssl verify -verbose -CAfile ../../intermediateca/ca-chain.pem msp/signcerts/cert.pem
    

    すなわち、ユーザのmsp/signentrts/cert.pem証明書は、intermediateCAのca-chainである必要がある.pem検証は、後者がrootCAとintermediateCAの2つの証明書内容を含むため、証明書チェーン検証を形成する.個々のCA証明書(root CAでもintermediate CAでも)は、単独で検証できません.
    これで簡単な中間CAの流れができた.
    リンク:https://www.jianshu.com/p/2ab1ba296339

    2.ルートCAコンテナの生成


    まずはミラーとか
    #
    # Copyright IBM Corp All Rights Reserved
    #
    # SPDX-License-Identifier: Apache-2.0
    #
    version: '2'
    
    networks:
      basic:
    
    services:
    
    #------------------------------- Root CA for Orgs -------------------------------
    
      ca-order.sunlidong.com:
        container_name: ca-order.sunlidong.com
        image: hyperledger/fabric-ca:latest
        environment:
          - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
          - FABRIC_CA_SERVER_HOME=/etc/hyperledger/fabric-ca-server
          - FABRIC_CA_CLIENT_HOME=/etc/hyperledger/fabric-ca-client
          - FABRIC_CA_SERVER_CA_NAME=ca-order.sunlidong.com
          - FABRIC_CA_SERVER_TLS_ENABLED=false
        ports:
          - "7354:7054"
        command: sh -c "fabric-ca-server start -b admin:adminpw --cfg.affiliations.allowremove  --cfg.identities.allowremove"
        volumes:
          - ./crypto/ca1:/etc/hyperledger/fabric-ca-server
        networks:
          - basic
    
    docker-compose -f docker.yaml  up -d 
    

    正常に起動したかどうかを確認

    3.init中間CAのプロファイル


    具体的にはなぜ容器の中でpingが違うのかよく分かりません.しばらくはそうするしかない
    abric-ca-server init -b admin:adminpw -u http://admin:[email protected]:7354 -H `pwd`/crypto/ca2/ 
    

    複数のCAファイルがあれば複数生成可能

    4.中間CA容器の生成

    #
    # Copyright IBM Corp All Rights Reserved
    #
    # SPDX-License-Identifier: Apache-2.0
    #
    version: '2'
    
    networks:
      basic:
    
    services:
    
    #------------------------------- intermediate CA for Orgs -------------------------------
      ca-org1.test.com:
        container_name: ca-org1.test.com
        image: hyperledger/fabric-ca:latest
        environment:
          - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
          - FABRIC_CA_SERVER_HOME=/etc/hyperledger/fabric-ca-server
          - FABRIC_CA_CLIENT_HOME=/etc/hyperledger/fabric-ca-client
          - FABRIC_CA_SERVER_CA_NAME=ca-org1.test.com
          - FABRIC_CA_SERVER_TLS_ENABLED=false
        ports:
          - "8354:7054"
        command: sh -c "fabric-ca-server start -b admin:adminpw  -u  http://admin:[email protected]:7354"
        volumes:
          - ./crypto/ca2:/etc/hyperledger/fabric-ca-server
        networks:
          - basic
    #------------------------------- intermediate CA for Orgs -------------------------------  
      ca-org2.test.com:
        container_name: ca-org2.test.com
        image: hyperledger/fabric-ca:latest
        environment:
          - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
          - FABRIC_CA_SERVER_HOME=/etc/hyperledger/fabric-ca-server
          - FABRIC_CA_CLIENT_HOME=/etc/hyperledger/fabric-ca-client
          - FABRIC_CA_SERVER_CA_NAME=ca-org2.test.com
          - FABRIC_CA_SERVER_TLS_ENABLED=false
        ports:
          - "9354:7054"
        command: sh -c "fabric-ca-server start -b admin:adminpw  -u  http://admin:[email protected]:7354"
        volumes:
          - ./crypto/ca3:/etc/hyperledger/fabric-ca-server
        networks:
          - basic
    
    

    5.登録の開始


    caプロファイルの変更
    id:
      name: [email protected]
      type: client
      affiliation: org1.department1
      maxenrollments: 0
      attributes:
        - name: hf.Registrar.Roles
          value: client,orderer,peer,user
        - name: hf.Registrar.DelegateRoles
          value: client,orderer,peer,user
        - name: hf.Registrar.Attributes
          value: "*"
        - name: hf.GenCRL
          value: true
        - name: hf.Revoker
          value: true
        - name: hf.AffiliationMgr
          value: true
        - name: hf.IntermediateCA
          value: true
        - name: role
          value: admin
          ecert: true
    

    登録
    fabric-ca-client register -H `pwd`/cacerts_ca2/ --id.secret=password
    

    証明書の取得
    fabric-ca-client enroll -u http://[email protected]:[email protected]:8354  -H `pwd`/ca_admin/ca2_admin
    

    これにより,中間ca登録などが実行可能となり,他の操作は前を参照する.コンテナ起動モード