Фон
Я пытаюсь завершить sh руководство по эксплуатации Fabri c CA , чтобы лучше понять детали настройки TLS. Тем не менее, я застрял на Create and Join Channel part.
Аналогичный вопрос был задан здесь на peer-channel-creation-fails-in-hyperledger-fabri c, но иногда одни и те же ошибки могут иметь разные причины.
Я безуспешно следовал инструкциям вышеупомянутого решения. Ошибка, которую я получаю при попытке создать канал:
Error: got unexpected status: BAD_REQUEST -- error validating channel creation transaction for new channel 'mychannel', could not successfully apply update to template configuration: error authorizing update: error validating DeltaSet: policy for [Group] /Channel/Application not satisfied: implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Admins' sub-policies to be satisfied
Среда
Мои версии для Docker изображений:
- Docker версия двигателя: 19.03.8;
- Docker Изображение и версия CA: hyperledger / fabri c -ca: 1.4.6;
- Docker Изображение и версия peer: hyperledger / fabri c -peer: 2.0;
- Docker Изображение и версия заказа: hyperledger / fabri c -заказчик: 2.0;
- Docker Изображение и версия инструментов (CLI): hyperledger / fabri c -инструменты: 2.0.
Воспроизведение ошибки
Я создал репозиторий на GitHub, куда я поместил коды, на которые ссылаются ссылки: fabri c -ca-operations-guide .
Я начинаю с выполнения tearup-docker-cas.sh
, чтобы создать все образы Docker для ЦС и, следовательно, структуры каталогов в / tmp / hyperledger / :
curl -sSL https://raw.githubusercontent.com/hanesbarbosa/fabric-ca-operations-guide/master/tearup-docker-cas.sh | bash -s
Когда я проверяю, что все изображения запущены и работают, с помощью команды docker ps
Я создаю криптографический материал, используя setup-crypto.sh
:
curl -sSL https://raw.githubusercontent.com/hanesbarbosa/fabric-ca-operations-guide/master/setup-crypto.sh | bash -s
Затем я загружаю файл configtx.yaml в мой текущий каталог:
curl -sSL https://raw.githubusercontent.com/hanesbarbosa/fabric-ca-operations-guide/master/configtx.yaml -o ./configtx.yaml
Теперь я готов установить переменную среды FABRIC_CFG_PATH , чтобы я мог создать блок генеза и транзакцию канала с помощью сценария create_genesis_block_channel_tx.sh
. Артефакты будут доступны по адресу / tmp / hyperledger / org0 / orderer / :
curl -sSL https://raw.githubusercontent.com/hanesbarbosa/fabric-ca-operations-guide/master/create_genesis_block_channel_tx.sh | bash -s
Поскольку блок генезиса доступен, Теперь мы можем создать изображение заказа, используя tearup-docker-peers.sh
. Этот скрипт также создает все инструменты пиров и контейнеров:
curl -sSL https://raw.githubusercontent.com/hanesbarbosa/fabric-ca-operations-guide/master/tearup-docker-peers.sh | bash -s
После шага 5 Я готов создать канал , Поэтому я использую следующую команду для использования контейнера cli-org1 :
docker exec -it cli-org1 bash -c "export CORE_PEER_MSPCONFIGPATH=/tmp/hyperledger/org1/admin/msp; peer channel create -c mychannel -f /tmp/hyperledger/assets/mychannel.tx -o orderer1-org0:7050 --outputBlock /tmp/hyperledger/assets/mychannel.block --tls --cafile /tmp/hyperledger/org1/peer1/tls-msp/tlscacerts/tls-0-0-0-0-7052.pem"
В этот момент я получаю сообщение об ошибке:
Error: got unexpected status: BAD_REQUEST -- error validating channel creation transaction for new channel 'mychannel', could not successfully apply update to template configuration: error authorizing update: error validating DeltaSet: policy for [Group] /Channel/Application not satisfied: implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Admins' sub-policies to be satisfied
Когда я хочу очистить все для начала sh Я просто выполнить:
curl -sSL https://raw.githubusercontent.com/hanesbarbosa/fabric-ca-operations-guide/master/teardown-docker.sh | bash -s
Исправление попыток
- Я всегда пробую новую попытку с набором криптографических материалов и изображений fre sh, поэтому я всегда выполняю шаг 6 из Воспроизведение секция ошибки перед повторной попыткой;
- Я создаю канал на шаге 4 как администратор организации;
- Я проверяю, есть ли у TLS заказчик root сертификат подписи в списке (все используют один и тот же CA для сертификатов TLS);
- Переменная среды ORDERER_GENERAL_LOGLEVEL установлена на «отладку» в образе заказчика, так что у меня могут быть более подробные ошибки;
- Я попытался подписать транзакцию создания канала ( mychannel.tx ) перед тем, как выполнить команду
peer channel create
, чтобы убедиться, что это не отсутствие подписи, но в ошибке упоминается / Канальная / прикладная * групповая политика , которая в данном случае является неявным мета-типом, где правило "ЛЮБЫЕ Администраторы" ;
Organizations:
# Policies defines the set of policies at this level of the config tree
# For Application policies, their canonical path is
# /Channel/Application/<PolicyName>
Policies: &ApplicationDefaultPolicies
LifecycleEndorsement:
Type: ImplicitMeta
Rule: "MAJORITY Endorsement"
Endorsement:
Type: ImplicitMeta
Rule: "MAJORITY Endorsement"
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "ANY Admins"