Проблемы с сертификатами в сети блокчейнов Hyperledger Fabri c, развернутой с помощью Swarm - PullRequest
0 голосов
/ 28 апреля 2020

Я столкнулся с этой конкретной проблемой при развертывании очень простой сети блокчейнов на Docker Swarm с использованием Hyperledger Fabri c v1.4.4. В нем есть 2 организации (по 2 одноранговых узла), 5 заказчиков (консенсус Raft), 2 CA (по одному для каждой организации) и 4 couchDB (по 1 на каждого участника).

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

Ошибка: ошибка при получении клиента индоссатора для канала: клиенту индоссанта не удалось подключиться к peer0org1: 7051: не удалось создать новое соединение: превышен крайний срок контекста

И когда я go через журналы на этом узле, я вижу сообщение, которое привлекло мое внимание:

createTransport -> DEBU 13 c grp c: addrConn.createTransport не удалось подключиться к {peer1car1: 8051 0}. Ошибка: ошибка подключения: des c = "транспорт: сбой подтверждения аутентификации: x509: сертификат действителен для peer1.org1, peer1, а не peer1org1". Переподключение ...

И фактическое сообщение об ошибке:

UT C [core.comm] ServerHandshake -> ERRO 1b9 TLS handshake с ошибкой удаленной ошибки: tls: bad сертификат сервера = удаленный адрес PeerServer = 10.0.2.7: 50504

Затем я начал искать файл crypto-config.yaml и docker -compose.yaml, используемый для развертывания моего стека. В файле crypto-config.yaml я объявил ключ домена de как «org1», и, как вы можете видеть в журналах, сертификат действителен для peer1org1. Но вот проблема, когда я объявляю имя службы "peer0.org1", я получаю сообщение об ошибке от Swarm, в котором говорится, что это недопустимое имя.

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

По другой теме: я новичок в мире контейнерных оркестров и хотел бы узнать ваше мнение. Вы бы использовали Kubernetes или Swarm для развертывания сети блокчейнов Hyperledger Fabri c в производстве?

1 Ответ

1 голос
/ 30 апреля 2020

Имя службы, действительное в вашей сети docker (я предполагаю, что это peer1org1), должно присутствовать в сертификате TLS в качестве альтернативного имени субъекта (SAN). Вы можете указать SANS в crypto-config.yaml следующим образом:

PeerOrgs:
  - Name: org1
    Domain: org1
    EnableNodeOUs: true
    Specs:
      - Hostname: peer1
        SANS:
          - "peer1org1"
      - Hostname: peer2
        SANS:
          - "peer2org1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...