Ошибка при рукопожатии для tls auth клиентом apache pulsar на сервере ubuntu

Я установил автономную версию apache pulsar v2.3 на Ubuntu 18.04.2 LTS из Запустить Pulsar локально < / а>. Он отлично работает без аутентификации. Я попытался настроить сертификат tls с помощью security-tls-transport и security-tls-authentication. Я изменил следующие конфигурации _1 _, _ 2_ и standalone.conf, как указано в ссылке. Запуск Pulsar с помощью команды bin/pulsar standalone и приведенной ниже команды для отправки сообщения.

bin/pulsar-client produce my-topic --messages "hello-pulsar"

Но это вызывает следующую ошибку

 [pulsar-client-io-1-1] INFO  org.apache.pulsar.client.impl.ConnectionPool -           
 [[id: 0x8010c4f5, L:/127.0.0.1:42840 - R:localhost/127.0.0.1:6651]] 
 Connected to server
 09:47:17.686 [pulsar-client-io-1-1] WARN  
 org.apache.pulsar.client.impl.ClientCnx - Error during handshake
 java.nio.channels.ClosedChannelException: null
    at io.netty.handler.ssl.SslHandler.channelInactive(...)(Unknown Source) 
 ~[io.netty-netty-all-4.1.32.Final.jar:4.1.32.Final]
 09:47:17.691 [pulsar-client-io-1-1] INFO  
 org.apache.pulsar.client.impl.ClientCnx - [id: 0x8010c4f5, 
 L:/127.0.0.1:42840 ! R:localhost/127.0.0.1:6651] Disconnected
 09:47:17.692 [pulsar-client-io-1-1] WARN  
 org.apache.pulsar.client.impl.ConnectionPool - [[id: 0x8010c4f5, 
 L:/127.0.0.1:42840 ! R:localhost/127.0.0.1:6651]] Connection handshake 
 failed: org.apache.pulsar.client.api.PulsarClientException: Connection 
 already closed
 09:47:17.692 [pulsar-client-io-1-1] WARN  
 org.apache.pulsar.client.impl.PulsarClientImpl - [my-topic] Failed to get 
 partitioned topic metadata: 
 org.apache.pulsar.client.api.PulsarClientException: Connection already 
 closed
 09:47:17.692 [main] ERROR org.apache.pulsar.client.cli.PulsarClientTool - 
 Error while producing messages
 09:47:17.692 [main] ERROR org.apache.pulsar.client.cli.PulsarClientTool - 
 Connection already closed
 org.apache.pulsar.client.api.PulsarClientException: Connection already 
 closed at 
 org.apache.pulsar.client.impl.ClientCnx.channelInactive(ClientCnx.java:204) 
 ~[org.apache.pulsar-pulsar-client-original-2.3.0.jar:2.3.0]
    at 
 io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive
 (AbstractChannelHandlerContext.java:245) ~[io.netty-netty-all- 
 4.1.32.Final.jar:4.1.32.Final]
    at 
 io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive
(AbstractChannelHandlerContext.java:231) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive
(AbstractChannelHandlerContext.java:224) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at 
io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed
(ByteToMessageDecoder.java:390) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at 
io.netty.handler.codec.ByteToMessageDecoder.channelInactive
   (ByteToMessageDecoder.java:355) ~[io.netty-netty-all- 
  4.1.32.Final.jar:4.1.32.Final]
    at 
  io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive
   (AbstractChannelHandlerContext.java:245) ~[io.netty-netty-all- 
  4.1.32.Final.jar:4.1.32.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive
  (AbstractChannelHandlerContext.java:231) ~[io.netty-netty-all- 
  4.1.32.Final.jar:4.1.32.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive
  (AbstractChannelHandlerContext.java:224) ~[io.netty-netty-all- 
 4.1.32.Final.jar:4.1.32.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed
 (ByteToMessageDecoder.java:390) ~[io.netty-netty-all- 
 4.1.32.Final.jar:4.1.32.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.channelInactive
     (ByteToMessageDecoder.java:355) ~[io.netty-netty-all- 
  4.1.32.Final.jar:4.1.32.Final]
    at io.netty.handler.ssl.SslHandler.channelInactive(SslHandler.java:1054) 
 ~[io.netty-netty-all-4.1.32.Final.jar:4.1.32.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive
  (AbstractChannelHandlerContext.java:245) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive
 (AbstractChannelHandlerContext.java:231) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive
(AbstractChannelHandlerContext.java:224) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive
(DefaultChannelPipeline.java:1429) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive
(AbstractChannelHandlerContext.java:245) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive
(AbstractChannelHandlerContext.java:231) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelInactive
(DefaultChannelPipeline.java:947) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at io.netty.channel.AbstractChannel$AbstractUnsafe$8.run
(AbstractChannel.java:826) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute
(AbstractEventExecutor.java:163) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks
(SingleThreadEventExecutor.java:404) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:335) ~ 
[io.netty-netty-all-4.1.32.Final.jar:4.1.32.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run
(SingleThreadEventExecutor.java:909) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at io.netty.util.concurrent.FastThreadLocalRunnable.run
(FastThreadLocalRunnable.java:30) ~[io.netty-netty-all- 
4.1.32.Final.jar:4.1.32.Final]
    at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_201]
09:47:17.694 [main] INFO  org.apache.pulsar.client.cli.PulsarClientTool - 0 
messages successfully produced

Может ли кто-нибудь помочь решить эту проблему?


person SRK    schedule 03.04.2019    source источник


Ответы (2)


Когда включено шифрование транспорта TLS, вам необходимо настроить клиент для использования https: // и порта 8443 для URL-адреса веб-службы, а также для использования pulsar + ssl: // и порта 6651 для URL-адреса службы брокера.

Похоже, клиентский инструмент CLI, который вы использовали, bin / pulsar-client создает my-topic --messages «hello-pulsar», не использует префикс https + ssl: //. Поэтому ваш клиент пытается установить незащищенное соединение и терпит неудачу на этапе согласования TLS, потому что это.

Можете ли вы попробовать подключиться с помощью простого клиента Java или Python, который указывает префикс pulsar + ssl: //?

person David Kjerrumgaard    schedule 26.04.2019
comment
Привет, у меня аналогичная проблема при создании модульного теста, что дает мне исключение: org.apache.pulsar.client.api.PulsarClientException $ InvalidServiceURL: java.lang.IllegalArgumentException: компонент полномочий отсутствует в сервисе uri: public / default. Как решить эту проблему, если я еще не хочу использовать ssl? - person Felix Aballi; 10.06.2019
comment
@FelixAballi Полномочия - это часть URI. Ваша ошибка предполагает, что вы его не предоставляете. См .: rfc-base.org/txt/rfc-3986.txt. - person David Kjerrumgaard; 28.06.2019

Если вы внесли все необходимые изменения в _1 _, _ 2_ и standalone.conf, попробуйте выполнить следующую команду для публикации данных:

bin/pulsar-client --url pulsar+ssl://127.0.0.1:6651 produce my-topic --messages "hello-pulsar"

Здесь вам нужно указать URL-адрес службы для данных tls.

Убедитесь, что в ваш standalone.conf файл добавлены следующие свойства:

tlsEnabled=true
tlsCertificateFilePath=/path/to/broker.cert.pem
tlsKeyFilePath=/path/to/broker.key-pk8.pem
tlsTrustCertsFilePath=/path/to/ca.cert.pem
brokerServicePortTls=6651

Кроме того, не забудьте обновить следующие значения конфигурации в файле client.conf:

brokerServiceUrl=pulsar+ssl://127.0.0.1:6651
webServiceUrl=https://127.0.0.1:8443
tlsTrustCertsFilePath=/path/to/ca.cert.pem

Это должно сработать.

person aru_sha4    schedule 15.06.2020