Сеть Docker, ни одна цель не представила приемлемые сертификаты - PullRequest
0 голосов
/ 25 июня 2019

Я перешел из runnodes в docker-compose с партией [a / b] и нотариальным узлом.Один вариант использования, который работал с узлами выполнения, больше не работает, очевидно, он должен быть связан с новой настройкой сети.Я пытался загрузить инструменты, но большинство ссылок не работают.Кто-нибудь может дать мне подсказку, пожалуйста, что я могу сделать?Сервер отдыха вызывает party-a через rpc, через некоторое время выдает ошибку, например:

api-gateway    | D 17:47:23 71 RPCClientProxyHandler.artemisMessageHandler - Got message from RPC server Observation(id=99f3bc35-10ec-4b0f-8fa2-15156fec43e4, timestamp: 2019-06-25T17:47:15.587Z, entityType: Invocation, content=[rx.Notification@66fc17ad OnNext [(0, Starting), (0, Generating transaction.), (0, Verifying contract constraints.), (0, Signing transaction with our private key.), (1, Collecting signatures from counterparties.), (1, Verifying collected signatures.), (0, Gathering the counterparty's signature.), (1, Collecting signatures from counterparties.), (1, Verifying collected signatures.), (0, Obtaining notary signature and recording transaction.), (1, Requesting signature by notary service), (2, Requesting signature by Notary service), (2, Validating response from Notary service), (1, Broadcasting transaction to participants), (0, Done)]], deduplicationIdentity=fb9d4547-bd57-4b50-81e0-a6a01077b4a2)
party-a        | [ERROR] 17:47:25+0000 [nioEventLoopGroup-2-1] netty.AMQPChannelHandler.invoke - Provided certificate subject O=PartyA, L=London, C=GB not in expected set [O=Notary, L=London, C=GB] {allowedRemoteLegalNames=O=Notary, L=London, C=GB, localCert=O=PartyA, L=London, C=GB, remoteAddress=localhost/127.0.0.1:10002, remoteCert=O=PartyA, L=London, C=GB, serverMode=false}
party-a        | [ERROR] 17:47:25+0000 [nioEventLoopGroup-2-1] netty.AMQPClient.invoke - Blocking future connection attempts to localhost:10002 due to bad certificate on endpoint
party-a        | [ERROR] 17:47:26+0000 [nioEventLoopGroup-2-2] netty.AMQPClient.nextTarget - No targets have presented acceptable certificates for [O=Notary, L=London, C=GB]. Halting retries

Docker Compose:

version: '3'
services:
  notary:
    depends_on:
      - "party-a"
    container_name: notary
    image: notary
    build: build/nodes/Notary
  party-a:
    container_name: party-a
    image: party-a
    build: build/nodes/PartyA
  party-b:
    depends_on:
      - "party-a"
    container_name: party-b
    image: party-b
    build: build/nodes/PartyB
  api-gateway:
    depends_on:
      - "notary"
    container_name: api-gateway
    image: api-gateway
    build: server/
    ports:
      - 8080:8080

Развертывание узлов:

task deployNodes(type: net.corda.plugins.Dockerform, dependsOn: ['jar']) {
    nodeDefaults {
        cordapp project(':contracts')
        cordapp project(':workflows')
    }
    node {
        name "O=Notary,L=London,C=GB"
        rpcUsers = rpcUsersList
        notary = [validating: false]
        useTestClock true
        p2pAddress "localhost:10002"
        rpcSettings {
            address("0.0.0.0:10003")
            adminAddress("0.0.0.0:10004")
        }
    }
    node {
        name "O=PartyA,L=London,C=GB"
        rpcUsers = [[user: "user1", "password": "test", "permissions": ["ALL"]]]
        useTestClock true
        p2pAddress "localhost:10002"
        rpcSettings {
            address("0.0.0.0:10003")
            adminAddress("0.0.0.0:10004")
        }
    }
    node {
        name "O=PartyB,L=New York,C=US"
        rpcUsers = rpcUsersList
        useTestClock true
        p2pAddress "localhost:10002"
        rpcSettings {
            address("0.0.0.0:10003")
            adminAddress("0.0.0.0:10004")
        }
    }
    new File('build/nodes').mkdir()
    new File('build/nodes/docker-compose.yml')
}

Шлюз API, соединяющийся с Стороной A:

FROM java:8
ADD build/libs/server-0.1.jar server-0.1.jar
ENV JPDA_ADDRESS="8000"
ENV JPDA_TRANSPORT="dt_socket"
ENTRYPOINT ["java", \
            "-jar", \
            "server-0.1.jar", \
            "--config.rpc.host=party-a", \
            "--config.rpc.port=10003", \
            "--config.rpc.username=user1", \
            "--config.rpc.password=test"]

1 Ответ

1 голос
/ 26 июня 2019

Вам потребуется заменить часть localhost IP-адресами сети Docket: https://docs.docker.com/v17.09/engine/userguide/networking/#default-networks

Также убедитесь, что на каждом контейнере открыты правильные порты, чтобы к ним могли обращаться другие контейнеры: https://docs.docker.com/compose/networking/

Я подозреваю, что ошибка, которую вы получаете, заключается в том, что PartyA подключается к себе, а не к контейнеру, на котором работает нотариальный узел

...