Hyperledger Fabric: как используется флаг clientauth при создании однорангового канала?

#hyperledger-fabric

#hyperledger-fabric

Вопрос:

Я понимаю, что clientauth — это то, что включено на сервере, так что это позволит клиенту подключиться только после того, как клиент предоставит действительный сертификат TLS. Это правильно?

Если это так, то почему флаг clientauth может быть установлен в качестве одного из аргументов команды создания однорангового канала?

 --clientauth                          Use mutual TLS when communicating with the orderer endpoint
  

когда создается канал, не является ли заказчик сервером? и машина, на peer channel create которой выполняется, является клиентом? итак, тогда почему мы включаем clientauth на клиенте? чего это дает, если вообще чего-либо дает?

Ответ №1:

описание флага (выше) отражает это идеально.

Для связи по протоколу TLS может использоваться как односторонняя (только сервер), так и двусторонняя (сервер и клиент) аутентификация. Одноранговый узел является одновременно TLS-сервером и TLS-клиентом. Первый используется, когда другой одноранговый узел, приложение или CLI устанавливает с ним соединение, а второй — когда он устанавливает соединение с другим одноранговым узлом или заказчиком.

Этот флаг предназначен для того, чтобы разрешить обязательную аутентификацию клиента на одноранговом узле — по умолчанию он отключен (когда TLS включен на одноранговом узле). Это средство идентификации клиента на сервере (например, у однорангового узла и у заказчика может быть включена аутентификация клиента при взаимной настройке TLS).

Ответ №2:

Я понимаю, что clientauth — это то, что включено на сервере, так что это позволит клиенту подключиться только после того, как клиент предоставит действительный сертификат TLS. Это правильно?

ДА.

Если это так, то почему флаг clientauth может быть установлен в качестве одного из аргументов команды создания однорангового канала?

Потому что без него клиент не предоставляет свой сертификат TLS серверу. Итак, если клиент пытается связаться с сервером, на котором включен clientauth, и peer channel create выполняется без этого флага, в журналах появляется сообщение об ошибке. Что-то вроде:

 2019-03-12 23:33:59.975 UTC [core/comm] ServerHandshake -> ERRO 022 TLS handshake failed with error tls: client didn't provide a certificate {"server": "PeerServer", "remote address": ""}
  

когда создается канал, не является ли заказчик сервером?

ДА

и машина, на которой выполняется создание однорангового канала, является клиентом?

ДА

итак, тогда почему мы включаем clientauth на клиенте? чего это дает, если вообще чего-либо дает?

отвечал ранее