Vernemq SSL javax.net.ssl.SSLException:软件导致连接中止:recv 失败

问题描述

我尝试在 JAVA 中使用 Vernemq 进行 MQTT 连接。

我在 Window 中使用 VirtualBox 的 centOS7,它在与我的主机 PC 的 tcp 连接中工作。

但是当我尝试通过自签名 SSL 在 SSL 中进行连接时,它在 java 中失败了。

MqttException (0) - javax.net.ssl.SSLException: Software caused connection abort: recv Failed
at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38)
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:604)
at java.lang.Thread.run(UnkNown Source)
Caused by: javax.net.ssl.SSLException: Software caused connection abort: recv Failed
at sun.security.ssl.Alert.createSSLException(UnkNown Source)
at sun.security.ssl.TransportContext.fatal(UnkNown Source)
at sun.security.ssl.TransportContext.fatal(UnkNown Source)
at sun.security.ssl.TransportContext.fatal(UnkNown Source)
at sun.security.ssl.SSLTransport.decode(UnkNown Source)
at sun.security.ssl.SSLSocketImpl.decode(UnkNown Source)
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(UnkNown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(UnkNown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(UnkNown Source)
at org.eclipse.paho.client.mqttv3.internal.SSLNetworkModule.start(SSLNetworkModule.java:89)
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:590)
... 1 more
Suppressed: java.net.socketException: Software caused connection abort: socket write error
    at java.net.socketoutputStream.socketWrite0(Native Method)
    at java.net.socketoutputStream.socketWrite(UnkNown Source)
    at java.net.socketoutputStream.write(UnkNown Source)
    at sun.security.ssl.SSLSocketoutputRecord.encodeAlert(UnkNown Source)
    ... 11 more
Caused by: java.net.socketException: Software caused connection abort: recv Failed
at java.net.socketInputStream.socketRead0(Native Method)
at java.net.socketInputStream.socketRead(UnkNown Source)
at java.net.socketInputStream.read(UnkNown Source)
at java.net.socketInputStream.read(UnkNown Source)
at sun.security.ssl.SSLSocketInputRecord.read(UnkNown Source)
at sun.security.ssl.SSLSocketInputRecord.readHeader(UnkNown Source)
at sun.security.ssl.SSLSocketInputRecord.decode(UnkNown Source)
... 8 more

自签名 SSL 可能没问题。我在 mosquitto broker 中进行了测试,并且可以正常工作。 我认为问题来自vernemq.conf,但我不知道要修复哪个部分。


有人说

listener.ssl.default = 127.0.0.1:8883
listener.ssl.default.cafile = /etc/vernemq/ssl/all-ca.crt
listener.ssl.default.certfile = /etc/vernemq/ssl/server.crt
listener.ssl.default.keyfile = /etc/vernemq/ssl/server.key

设置 SSL 就够了,但对我不起作用。 这是我现在的 vernemq.conf。


max_inflight_messages = 20
max_message_size = 0
max_inflight_messages = 20
max_message_size = 0
upgrade_outgoing_qos = off
listener.nr_of_acceptors = 10
listener.ssl.require_certificate = on
listener.ssl.use_identity_as_username = on
listener.ssl.tls_version = tlsv1.2
listener.ssl.default.cafile = /home/me/ca.crt
listener.ssl.default.certfile = /home/me/broker1.crt
listener.ssl.default.keyfile = /home/me/broker1.key
listener.max_connections = 100000
max_online_messages = 1000
max_offline_messages = 1000
##listener.tcp.default = 10.0.2.15:8883
listener.ssl.default = 10.0.2.15:8883
log.console = console
log.syslog = on
nodename = Verne
distributed_cookie = vmq
vmq_bcrypt.pool_size=60000

我该怎么办?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)