Центр сертификации Hyperledger игнорирует сертификат TLS от Fabri c SDK для узла - PullRequest
0 голосов
/ 06 мая 2020

У меня есть CA для моей организации. Это настройка для контейнера CA docker:

version: '2'
services:
  ca.org1.example.com:
    container_name: ca.org1.example.com
    image: hyperledger/fabric-ca
    command: /bin/bash -c 'fabric-ca-server start -b rca-org-admin:rca-org-adminpw --port 6053'
    environment:
      - FABRIC_CA_SERVER_HOME=/tmp/hyperledger/fabric-ca/crypto
      - FABRIC_CA_SERVER_TLS_ENABLED=true
      - FABRIC_CA_SERVER_CSR_CN=ca.org1.example.com
      - FABRIC_CA_SERVER_CSR_HOSTS=0.0.0.0
      - FABRIC_CA_SERVER_DEBUG=true
      - ADMIN_CREDS=rca-org-admin:rca-org-adminpw
      - PORT=6053
    volumes:
      - /home/user/go/src/network/crypto-config/org1/ca/server:/tmp/hyperledger/fabric-ca
    ports:
      - 6053:6053
    networks:
      - basic
networks:
    basic:

У меня есть connectionProfile.yaml с URL-адресом и сертификатом TLS моего CA:

certificateAuthorities:
  ca.org1.examlple.com:
    url: https://localhost:6053
    tlsCACerts:
      pem: |
        -----BEGIN CERTIFICATE-----
        MIICMzCCAdqgAwIBAgIUYj0f4V+ms+xjSSx73MYurypAwGUwCgYIKoZIzj0EAwIw
        bjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRQwEgYDVQQK
        EwtIeXBlcmxlZGdlcjEPMA0GA1UECxMGRmFicmljMR8wHQYDVQQDExZjYS5xcHIu
        Zm9vdGJhbGxuZXQuY29tMB4XDTIwMDUwNjA5NTgwMFoXDTM1MDUwMzA5NTgwMFow
        bjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRQwEgYDVQQK
        EwtIeXBlcmxlZGdlcjEPMA0GA1UECxMGRmFicmljMR8wHQYDVQQDExZjYS5xcHIu
        Zm9vdGJhbGxuZXQuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2q06YuK7
        L6K2kwl5HPwW1exdxBoEwiQ+denvNtoq1hvo4f6zwtlD6+aVwfnu9CvLlriPEJy3
        KSbM8/IuszlKyqNWMFQwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8C
        AQEwHQYDVR0OBBYEFG4G17iqYS0wCNskmsFC8pUtXf8zMA8GA1UdEQQIMAaHBAAA
        AAAwCgYIKoZIzj0EAwIDRwAwRAIgZMIAjEyB9aeqSJuvBqPBkJAddOCTEdsPwbzb
        Bql46DICIAl998KlBM23r4iRYPoZTX8/8njPfXpi5a8lX85Skpme
        -----END CERTIFICATE-----
    httpOptions:
      verify: false

Я загружаю этот connectionProfile.yaml в мое приложение nodeJS и попробуйте зарегистрировать пользователя. См. Код ниже:

      const caInfo = ccp.certificateAuthorities['ca.org1.example.com'];
      const caTLSCACerts = caInfo.tlsCACerts.pem;
      const ca = new FabricCAServices(caInfo.url, { trustedRoots: caTLSCACerts, verify: false }, caInfo.caName);
​
      // Create a new file system based wallet for managing identities.
      const walletPath = path.join(process.cwd(), 'wallet');
      const wallet = new FileSystemWallet(`${__dirname}/../hyperledger/wallet`);
      console.log(`Wallet path: ${walletPath}`);
​
      // Check to see if we've already enrolled the admin user.
      const identityLabel = 'admin.org1.example.com'
      const identity = await wallet.exists(identityLabel);
      if (!identity) {
        // Enroll the admin user, and import the new identity into the wallet.
        const enrollment = await ca.enroll({ enrollmentID: 'rca-org-admin', enrollmentSecret: 'rca-org-adminpw' });
        const x509Identity = {
            certificate: enrollment.certificate,
            privateKey: enrollment.key.toBytes(),
            mspId: 'org1MSP',
            type: 'X.509',
        };​
        await wallet.import('admin.org1.example.com', x509Identity);
        console.log('Successfully enrolled admin user "admin" and imported it into the wallet');
      }

Думаю, tlsCACerts.pem нужен для TLS-соединения с CA. Регистрация пользователя по этому коду прошла успешно. Но если я заменю этот сертификат (tlsCACerts.pem) на какой-либо другой (любой сертификат, даже случайно сгенерированный), почищу свой кошелек и попытаюсь зарегистрироваться, это все равно будет успешным. Логи контейнера CA подтверждают это. Мне кажется, что он не использует этот сертификат TLS, но почему, если на сервере CA включена сертификация TLS.

Версия фабри c -ca-server - 1.4.6

Версия Fabri c SDK для Node - 1.4.8

Может у кого-то есть мысли по этому поводу. Может я что-то не так делаю?

...