Сбой рукопожатия с фатальной ошибкой SSL_ERROR_SSL: ошибка: 14090086: подпрограммы SSL: ssl3_get_server_certificate: сбой проверки сертификата - PullRequest
0 голосов
/ 19 марта 2019

Я застрял с этой ошибкой при попытке создать канал с использованием API (я использую аналогичный образец, чтобы сбалансировать пример передачи из образцов ткани)

Однако я могу создать канал, установить, создать его экземпляр и вызвать с помощью команд cli

Я приложил скриншот ошибки и мой файл конфигурации сети введите описание изображения здесь

- networkconfig.yaml -

#

Профиль сетевого подключения предоставляет клиентским приложениям информацию о цели

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

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

название: "business-connect"

#

Любые свойства с префиксом "x-" будут рассматриваться как специфичные для приложения, точно так же, как присвоение имен

в заголовках HTTP или свойствах swagger работают. SDK просто проигнорирует эти поля и оставит

их для обработки заявок. Это механизм для разных компонентов приложения

для обмена информацией, которая не является частью стандартной схемы, описанной ниже. В частности,

свойство "x-type" с приведенным ниже примером значения "hlfv1" используется Hyperledger Composer для

определяет тип сетей Fabric (v0.6 и v1.0), с которыми он должен работать.

x-type: "hlfv1"

#

Опишите, что целевая сеть / делает.

описание: "Business connect-POC"

#

Схема версии контента. Используется SDK для применения соответствующих правил синтаксического анализа.

версия: "1.0"

#

Клиентский раздел будет добавляться для каждой организации, см. Org1.yaml и org2.yaml

#

клиент:

#

[Дополнительно]. Но большинство приложений имеют этот раздел, чтобы объекты канала могли быть построены

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

раздел.

каналов: # название канала внутренний канал:

# Required. list of orderers designated by the application to use for transactions on this
# channel. This list can be a result of access control ("org1" can only access "ordererA"), or
# operational decisions to share loads from applications among the orderers.  The values must
# be "names" of orgs defined under "organizations/peers"
orderers:
  - orderer1-htc

# Required. list of peers from participating orgs
peers:
  peer1-accounts:
    # [Optional]. will this peer be sent transaction proposals for endorsement? The peer must
    # have the chaincode installed. The app can also use this property to decide which peers
    # to send the chaincode install request. Default: true
    endorsingPeer: true

    # [Optional]. will this peer be sent query proposals? The peer must have the chaincode
    # installed. The app can also use this property to decide which peers to send the
    # chaincode install request. Default: true
    chaincodeQuery: true

    # [Optional]. will this peer be sent query proposals that do not require chaincodes, like
    # queryBlock(), queryTransaction(), etc. Default: true
    ledgerQuery: true

    # [Optional]. will this peer be the target of the SDK's listener registration? All peers can
    # produce events but the app typically only needs to connect to one to listen to events.
    # Default: true
    eventSource: true

  peer1-mgmt:
    endorsingPeer: false
    chaincodeQuery: true
    ledgerQuery: true
    eventSource: false

  peer1-project:
    endorsingPeer: false
    chaincodeQuery: true
    ledgerQuery: true
    eventSource: true


# [Optional]. what chaincodes are expected to exist on this channel? The application can use
# this information to validate that the target peers are in the expected state by comparing
# this list with the query results of getInstalledChaincodes() and getInstantiatedChaincodes()
chaincodes:
  # the format follows the "cannonical name" of chaincodes by fabric code
  - mycontract-v0.1

#

список участвующих организаций в этой сети

организации: htc:

mspid: htcMSP
orderer: 
  - orderer1-htc
certificateAuthorities:
  - ica-htc   accounts:
mspid: accountsMSP

peers:
  - peer1-accounts

# [Optional]. Certificate Authorities issue certificates for identification purposes in a Fabric based
# network. Typically certificates provisioning is done in a separate process outside of the
# runtime network. Fabric-CA is a special certificate authority that provides a REST APIs for
# dynamic certificate management (enroll, revoke, re-enroll). The following section is only for
# Fabric-CA servers.
certificateAuthorities:
  - ica-accounts

# [Optional]. If the application is going to make requests that are reserved to organization
# administrators, including creating/updating channels, installing/instantiating chaincodes, it
# must have access to the admin identity represented by the private key and signing certificate.
# Both properties can be the PEM string or local path to the PEM file. Note that this is mainly for
# convenience in development mode, production systems should not expose sensitive information
# this way. The SDK should allow applications to set the org admin identity via APIs, and only use
# this route as an alternative when it exists.
adminPrivateKey:
  path: network/data/orgs/accounts/admin/msp/keystore/accounts_sk
signedCert:
  path: network/data/orgs/accounts/admin/msp/signcerts/cert.pem

# профиль будет содержать публичную информацию об организациях кроме того, к которому он принадлежит. # Это необходимая информация заставить работать жизненные циклы транзакций, включая идентификаторы MSP и # peers с общедоступным URL для отправки предложений по транзакциям. Файл не будет содержит личную # информацию, зарезервированную для членов организация, такая как ключ администратора и сертификат, # fabric-ca регистрационный номер регистрации и секретный ключ и т. д. mspid: mgmtMSP сверстники: - peer1-mgmt certificateAuthorities: - ica-mgmt adminPrivateKey: путь: сеть / данные / организации / mgmt / admin / msp / keystore / mgmt_sk signedCert: путь: сеть / данные / организации / mgmt / admin / msp / signcerts / cert.pem проект: MSPID: ProjectMSP сверстники: - peer1-проект certificateAuthorities: - ica-проект adminPrivateKey: путь: сеть / данные / организации / проект / администратор / msp / хранилище ключей / проект_sk signedCert: путь: сеть / данные / организации / проект / администратор / msp / signcerts / cert.pem

#

Список клиентов для отправки транзакции и отправки запросов на создание / обновление. На время

нужен только один заказчик. Если определено более одного, какой из них используется

SDK зависит от реализации. Обратитесь к документации каждого SDK для обработки заказов.

заказчики: orderer1-htc:

url: grpcs://localhost:7050

# these are standard properties defined by the gRPC library
# they will be passed in as-is to gRPC client constructor
grpcOptions:
  ssl-target-name-override: orderer1-htc
tlsCACerts:
  path: network/data/htc.crt

#

Список пиров для отправки различных запросов, включая подтверждение, запрос

и регистрацию прослушивателя событий.

peers: peer1-account:

# this URL is used to send endorsement and query requests
url: grpcs://localhost:7051
grpcOptions:
  ssl-target-name-override: peer1-accounts
tlsCACerts:
  path: network/data/accounts.crt

peer1-mgmt: url: grpcs: // localhost: 8051 grpcOptions: ssl-target-name-override: peer1-mgmt tlsCACerts: путь: сеть / данные / mgmt.crt

peer1-проект: url: grpcs: // localhost: 9051

grpcOptions:
  ssl-target-name-override: peer1-project
tlsCACerts:
  path: network/data/project.crt

#

Fabric-CA - это особый тип центра сертификации, предоставляемый Hyperledger Fabric, который позволяет

управлять сертификатами через API REST.,Приложение может выбрать использование стандартного

центра сертификации вместо Fabric-CA, в этом случае этот раздел не будет указан.

CertificateAuthorities: ica-htc:

url: http://localhost:1054
httpOptions:
  verify: false
tlsCACerts:
  path: network/data/htc-ca-cert.pem
registrar:
  - enrollId: ica-htc-admin
    enrollSecret: ica-htc-adminpw
# [Optional] The optional name of the CA.
caName: ica-htc   ica-accounts:
url: http://localhost:7054
# the properties specified under this object are passed to the 'http' client verbatim when
# making the request to the Fabric-CA server
httpOptions:
  verify: false
tlsCACerts:
  path: network/data/accounts-ca-chain.pem

# Fabric-CA supports dynamic user enrollment via REST APIs. A "root" user, a.k.a registrar, is
# needed to enroll and invoke new users.
registrar:
  - enrollId: ica-accounts-admin
    enrollSecret: ica-accounts-adminpw
# [Optional] The optional name of the CA.
caName: ica-accounts

ica-mgmt: url: http://localhost:8054 httpOptions: verify: false tlsCACerts: путь: сеть / данные / mgmt-ca-chain.pem регистратор: - enrollId: ica-mgmt-admin enrollSecret: ica-mgmt-adminpw # [Необязательно] Необязательное имя CA.caName: ica-mgmt

ica-project: url: http://localhost:9054 httpOptions: verify: false tlsCACerts: путь: сеть / данные / project-ca-chain.pem регистратор: - enrollId: ica-project-admin enrollSecret: ica-project-adminpw # [Необязательно] Необязательное имя CA.caName: ica-project

1 Ответ

1 голос
/ 20 марта 2019

Похоже, вы получаете ошибку проверки имени хоста при квитировании TLS. В ваших настройках

# this URL is used to send endorsement and query requests
url: grpcs://localhost:7051
grpcOptions:
  ssl-target-name-override: peer1-accounts
tlsCACerts:
  path: network/data/accounts.crt

вы звоните localhost, но вы установили переопределение на peer1-accounts. Имя хоста, которое вы используете в URL-адресе, должно соответствовать одной из SAN в сертификате TLS, используемом партнером, ИЛИ любое значение, установленное для ssl-target-name-override, должно совпадать с одной из SAN в сертификате TLS.

Вы можете распечатать детали сертификата, используя openssl:

openssl x509 -noout -text -in path-to-tls-cert

...