Ошибка идентификации администратора при присоединении новых пиров к каналу - PullRequest
0 голосов
/ 04 мая 2018

Я очень устал от этой проблемы. Пожалуйста и объясните, пожалуйста, как я могу решить эту проблему, если вы знаете. Я умоляю

Я работаю над сэмплом "Fabcar", в котором 1 папка / 1 заказчик / 1 ca сервер находится в папке fabric-samples.

Я хотел добавить еще 2 пира в сеть и присоединить их к каналу (который называется мой канал)

Итак, я изменил 3 файла: crypto-config.yaml, docker-compose.yml, start.sh (в папке basic-network) соответственно.

Я также закончил производство криптографических материалов для новых 2 пиров с помощью инструмента cryptogen.

Но дело в том, что когда я выполнил "присоединение к равному каналу -b myblock.block" в контейнере peer0.org1.example.com, чтобы присоединить эти новые одноранговые узлы к каналу, это сообщение об ошибке показывается:

Это сообщение об ошибке

В нем говорится, что запрос «JoinChain» не прошел проверку авторизации для канала [mychannel]: [Не удалось проверить, что создатель предложения удовлетворяет локальному принципалу MSP во время политики безканальной проверки с политикой [Admins]: [Это удостоверение не является администратором]]))

Я также пробовал эту команду как внутри, так и снаружи peer0.org1.example с командой docker exec, и делал с sudo, и ничего не работает.

Похоже, мне нужно инициировать транзакцию с правами администратора, но я действительно не знаю, как это сделать и как решить эту проблему с авторизацией.

Пожалуйста, кто-нибудь, кто знает, как решить эту проблему, объясните мне это подробно.

Я очень долго страдал от этой проблемы. Я действительно в отчаянии.

Я бы очень признателен, если вы скажете мне, как. Ждем вашего ответа. Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Эта проблема связана с уровнем доступа учетных данных, которые вы используете. Вы должны быть администратором, чтобы добавить одноранговый узел в канал, чтобы иметь доступ к системному кодовому каналу cscc.

Другая возможная проблема заключается в том, что в конфигурации сети (обычно это файл configtx.yaml) существует некоторая политика, ограничивающая ваш доступ для присоединения однорангового узла к каналу, если вы хотите, чтобы я взглянул в ваш файл configtx и посмотрим, смогу ли я помочь.

Поскольку вы используете пример Fabcar и он вызывается с Node SDK, вы можете добавить одноранговый узел также с помощью SDK.

Пожалуйста, попробуйте:

Создание объекта клиента Fabric и регистрация пользователя с правами администратора. Вы можете сделать это в своем скрипте на основе enrollAdmin.js от Fabcar, как я объясню

В строке 72 Fabcar enrollAdmin.js вы можете видеть эту строку:

console.log('Assigned the admin user to the fabric client ::' + admin_user.toString());

Начните отсюда, внутри «тогда», которое начинается в строке 71. Вы должны зарегистрировать личность как администратор, используя метод

fabric_client.setAdminSigningIdentity(pk, cert, MSPID);

Параметр pk - это закрытый ключ администратора, cert - это его сертификат, а MSPID - это тот, который вы указали для его организации в файле configtx.yaml.

вы можете получить pk и cert, используя модуль файловой системы из Node, и добавляет следующее:

let fs = require('fs');

let cert = fs.readFileSync(path.join(__dirname, 'PATH_TO_CERT/CERT_NAME.pem'))
let pk = fs.readFileSync(path.join(__dirname, 'PATH_TO_PK','PK_NAME'))

Обычный путь к сертификату администратора:

/fabric-samples/basic-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/admincerts

А к секретному ключу есть:

/fabric-samples/basic-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore

Теперь вы только что добавили учетную запись администратора в экземпляр ваших клиентов, если все в порядке, вам нужно создать экземпляр однорангового узла с адресом вашего партнера в следующем примере:

peer=fabric_client.newPeer(grpc://localhost:7051);

Не забудьте использовать протокол grpc, и если tls включен, вы должны использовать grpcs.

Теперь создайте экземпляр канала вашего канала, используя идентификатор канала в качестве параметра:

let channel_i=fabric_client.newChannel('mychannel')

Затем создайте запрос для блока genesis (config) канала:

let orderer = fabric_client.newOrderer(ORDERER_URL);//the urlalso with grpc protocol
let tx_id=fabric.client.newTransactionID(true); //true means it's an administrative request
let g_request={
    txId: tx_id,
    orderer : orderer
}

Наконец, сделайте запрос на блокировку, затем используйте его для присоединения к каналу:

channel_i.getGenesisBlock(g_request).then((block) =>{

    tx_id = fabric.client.newTransactionID(true);
    let j_request = {
          targets : peer,
          block : block,
          txId : tx_id,
     };

    // send genesis block to the peer
        return channel_i.joinChannel(j_request, 10000).then((results) =>{
            if(results[0].response.status == 200) {
                // join successful
                console.log("Join successful!!!");
            } else {
                // not good
                console.log("Error:: "+ results);
                throw  results;
            }
        })
0 голосов
/ 04 мая 2018

Сообщение об ошибке является сообщением: [This identity is not an admin]. Для выполнения команды peer channel join необходимо использовать идентификатор администратора для данного партнера / организации.

Способ, которым криптоген создает криптографический материал, заключается в заполнении дерева каталогов определенной структуры. Для получения сертификата администратора вам необходимо использовать эту идентификационную информацию:

fabric-samples/basic-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp

для того, чтобы быть администратором для Org1. Сценарий, который создает канал и присоединяет один узел в образце по умолчанию, выполняется с помощью команды здесь:

https://github.com/hyperledger/fabric-samples/blob/f05a132586ae9ca7ce86b9e56ae4bd3b084bc959/basic-network/start.sh#L26

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...