Hyperledger Fabri c: ServerHandshake TLS handshake плохой сертификат server = PeerServer AND ServerHandshake TLS handshake EOF - PullRequest
0 голосов
/ 21 июня 2020

Я пытался подключить свой Golang бэкэнд к работающей сети Hyperledger, используя Hyperledger версии 2.0.0 ...

Я видел эту ошибку EOF рукопожатия ServerHandshake TLS при запуске «docker -compose up ":

peer0-org2 | 2020-06-21 04: 56: 29.113 UT C [core.comm] ServerHandshake -> ERRO 022 Подтверждение связи TLS завершилось ошибкой EOF server = PeerServer remoteaddress = 172.21.0.12: 51946

peer1-org1 | 2020-06-21 04: 56: 30.123 UT C [core.comm] ServerHandshake -> ERRO 021 Подтверждение связи TLS завершилось ошибкой EOF server = PeerServer remoteaddress = 172.21.0.11: 49860

peer0-org1 | 2020-06-21 04: 56: 30.547 UT C [core.comm] ServerHandshake -> ERRO 022 Подтверждение связи TLS завершилось ошибкой EOF server = PeerServer remoteaddress = 172.21.0.9: 34994

peer1-org2 | 2020-06-21 04: 56: 30.873 UT C [core.comm] ServerHandshake -> ERRO 021 Подтверждение связи TLS не удалось с ошибкой EOF server = PeerServer remoteaddress = 172.21.0.10: 52232

затем я увидел аналогичная ошибка установления связи ServerHandshake TLS (неверный сертификат подтверждения связи ServerHandshake TLS) при запуске моего Golang бэкэнда для доступа к цепному коду ... с дополнительным сообщением об ошибке от Golang:

--- FAIL: Test_ConnectionTest_Success (0,06 с ) client_test. go: 30: невозможно создать клиента из контекста канала: сбой при создании службы событий: не удалось получить ссылку на кеш chConfig: сбой QueryBlockConfig: сбой QueryBlockConfig: сбой queryChaincode: обработка транзакции для подтверждающего [localhost: 7051]: клиент-спонсор Код состояния: (2) CONNECTION_FAILED. Описание: набор номера на целевом [localhost: 7051]: соединение находится в состоянии TRANSIENT_FAILURE

FAIL

статус выхода 1

FAIL hyperledger-k8s-be / hyperledger 0.068s

------------ == из docker -составьте терминал Hyperledger

peer0-org1 | 2020-06-21 06: 00: 24.577 UT C [core.comm] ServerHandshake -> ERRO 090 Подтверждение TLS не удалось с ошибкой удаленная ошибка: tls: bad certificate server = PeerServer remoteaddress = 172.20.0.1: 58500

------------ == здесь в клиенте произошел сбой. go

channelClient, err: = sdkchannel.New (clientContext)

if err! = nil {return nil, errors.WithMessage (err, "невозможно сделать клиента из контекста канала")}

------------ == Я подозреваю, что один из этих три сертификата неверны в docker -compose.yaml> peer0-org1> environment

  - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
  - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
  - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt

Верно ли мое подозрение? В чем проблема?

docker -compose-ca.yaml неверен из-за

  hyperledger/fabric-ca:1.4.1

  the start-org1-client script to run under org1-client

  something else???

, пожалуйста, помогите. Спасибо

-------------- == Обновление 2020, 23 июня. Я могу проверить, правильно ли указаны сертификаты TLS SAN (альтернативное имя субъекта от $ openssl x509 -noout -text - в org1-ca-7054.pem

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            01:3b:4f:ea:63:1a:03:b4:61:45:e9:44:1b:29:dc:ed:e6:bc:0b:76
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: C = US, ST = North Carolina, O = Hyperledger, OU = Fabric, CN = fabric-ca-server
        Validity
            Not Before: Jun 21 05:14:00 2020 GMT
            Not After : Jun 18 05:14:00 2035 GMT
        Subject: C = US, ST = North Carolina, O = Hyperledger, OU = Fabric, CN = fabric-ca-server
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:3c:3f:d9:97:7e:fc:08:e5:0a:3f:fe:b3:fe:70:
                    33:20:92:6c:88:78:19:35:08:00:98:97:17:8b:af:
                    03:44:2d:a4:4d:65:63:fc:d8:b5:4c:23:cc:e6:63:
                    55:a3:4f:04:62:72:8d:b2:fa:f1:9a:9d:14:9f:f9:
                    aa:33:ee:fe:e8
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        X509v3 extensions:
            X509v3 Key Usage: critical
                Certificate Sign, CRL Sign
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:1
            X509v3 Subject Key Identifier: 
                78:B7:6D:51:91:0C:9E:6C:31:C9:63:67:34:BD:CA:18:B5:C5:35:D1
    Signature Algorithm: ecdsa-with-SHA256
         30:44:02:20:6a:1a:92:cc:45:9b:c9:a5:4d:61:b9:bd:a3:94:
         b2:2c:52:7a:16:36:91:12:f9:a0:1f:fe:77:29:a3:1e:05:5d:
         02:20:7f:e0:5d:c9:03:4f:8e:b2:6d:66:a4:8f:04:fb:e0:e6:
         52:cf:e0:e9:3a:1a:36:bc:7b:98:99:f9:c4:64:c6:7e

Значит, в ответе нет настроек SAN ...

1 Ответ

1 голос
/ 21 июня 2020

Судя по ошибке, похоже, что сертификат TLS однорангового узла не имеет правильного SAN (альтернативного имени субъекта), настроенного в нем для правильной аутентификации связи TLS.

Одноранговый сертификат TLS должен иметь SAN, настроенный с использованием имени контейнера или IP-адреса контейнера, или localhost, в зависимости от того, что вы используете для отправки запросов к узлу.

ПРИМЕЧАНИЕ. Для одного узла в TLS может быть настроено несколько сетей SAN. сертификат.

...