【问题标题】:SSL error when connecting to a mosquitto broker from another machine从另一台机器连接到 mosquitto 代理时出现 SSL 错误
【发布时间】:2017-01-17 10:32:39
【问题描述】:

我尝试使用安全 ssl 连接连接到 mosquitto 代理。 为此,我遵循以下
tutorial

mosquitto配置文件为:

tls_version tlsv1.2
pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
listener 1883

listener 8883
cafile /etc/mosquitto/certs2/ca.crt
certfile /etc/mosquitto/certs2/server.crt
keyfile /etc/mosquitto/certs2/server.key

我用这个script生成ca文件和服务器证书

只要客户端与代理在同一台机器上,使用 ca 文件连接到端口 8883 就不会出现任何问题。

mosquitto_sub -h localhost --cafile /etc/mosquitto/certs2/ca.crt  -t "test"  -p 8883 -v 

但是当我尝试从另一台机器上的客户端连接时,我收到以下错误:

1484748728: OpenSSL Error: error:14094416:SSL routines:SSL3_READ_BYTES:sslv3 alert certificate unknown

此外,当我使用 mosquitto_pub/sub 的不安全选项时,它运行良好。

--不安全

使用基于证书的加密时,此选项会禁用对服务器证书中的服务器主机名的验证。这 在测试初始服务器配置时可能很有用,但使它 恶意第三方可能冒充您的服务器 例如,通过 DNS 欺骗。仅在测试中使用此选项。如果 您需要在生产环境中使用此选项, 您的设置有问题,使用加密毫无意义。

所以,我在想我的服务器证书上的 commonName 可能不好,但我检查了一下,它对应于我用来建立连接的主机名。

在两台机器上都安装了 OpenSSL 1.0.2g。

为了更准确地了解发生了什么,我尝试运行 ssldump,但我真的不知道如何解释它

2 1  0.0292 (0.0292)  C>S  Handshake
      ClientHello
        Version 3.3 
        cipher suites
        Unknown value 0xc030
        Unknown value 0xc02c
        Unknown value 0xc028
        Unknown value 0xc024
        Unknown value 0xc014
        Unknown value 0xc00a
        Unknown value 0xa5
        Unknown value 0xa3
        Unknown value 0xa1
        Unknown value 0x9f
        Unknown value 0x6b
        Unknown value 0x6a
        Unknown value 0x69
        Unknown value 0x68
        TLS_DHE_RSA_WITH_AES_256_CBC_SHA
        TLS_DHE_DSS_WITH_AES_256_CBC_SHA
        TLS_DH_RSA_WITH_AES_256_CBC_SHA
        TLS_DH_DSS_WITH_AES_256_CBC_SHA
        Unknown value 0x88
        Unknown value 0x87
        Unknown value 0x86
        Unknown value 0x85
        Unknown value 0xc032
        Unknown value 0xc02e
        Unknown value 0xc02a
        Unknown value 0xc026
        Unknown value 0xc00f
        Unknown value 0xc005
        Unknown value 0x9d
        Unknown value 0x3d
        TLS_RSA_WITH_AES_256_CBC_SHA
        Unknown value 0x84
        Unknown value 0xc02f
        Unknown value 0xc02b
        Unknown value 0xc027
        Unknown value 0xc023
        Unknown value 0xc013
        Unknown value 0xc009
        Unknown value 0xa4
        Unknown value 0xa2
        Unknown value 0xa0
        Unknown value 0x9e
        TLS_DHE_DSS_WITH_NULL_SHA
        Unknown value 0x40
        Unknown value 0x3f
        Unknown value 0x3e
        TLS_DHE_RSA_WITH_AES_128_CBC_SHA
        TLS_DHE_DSS_WITH_AES_128_CBC_SHA
        TLS_DH_RSA_WITH_AES_128_CBC_SHA
        TLS_DH_DSS_WITH_AES_128_CBC_SHA
        Unknown value 0x9a
        Unknown value 0x99
        Unknown value 0x98
        Unknown value 0x97
        Unknown value 0x45
        Unknown value 0x44
        Unknown value 0x43
        Unknown value 0x42
        Unknown value 0xc031
        Unknown value 0xc02d
        Unknown value 0xc029
        Unknown value 0xc025
        Unknown value 0xc00e
        Unknown value 0xc004
        Unknown value 0x9c
        Unknown value 0x3c
        TLS_RSA_WITH_AES_128_CBC_SHA
        Unknown value 0x96
        Unknown value 0x41
        Unknown value 0xc011
        Unknown value 0xc007
        Unknown value 0xc00c
        Unknown value 0xc002
        TLS_RSA_WITH_RC4_128_SHA
        TLS_RSA_WITH_RC4_128_MD5
        Unknown value 0xc012
        Unknown value 0xc008
        TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
        TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
        TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA
        TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA
        Unknown value 0xc00d
        Unknown value 0xc003
        TLS_RSA_WITH_3DES_EDE_CBC_SHA
        Unknown value 0xff
        compression methods
                  NULL
2 2  0.0602 (0.0309)  S>C  Handshake
      ServerHello
        Version 3.3 
        session_id[0]=

        cipherSuite         Unknown value 0xc030
        compressionMethod                   NULL
2 3  0.0614 (0.0012)  S>C  Handshake
      Certificate
2 4  0.0614 (0.0000)  S>C  Handshake
      ServerKeyExchange
2 5  0.0614 (0.0000)  S>C  Handshake
      ServerHelloDone
2 6  0.0629 (0.0014)  C>S  Alert
    level           fatal
    value           certificate_unknown
2    0.0644 (0.0015)  C>S  TCP RST

服务器hello的cipherSuite上只有unknownvalue对我来说似乎很奇怪,但是ssl / tls对我来说是一个全新的话题......

您对可能导致此问题的原因或如何调试它有一些想法吗?

如果您能给我一些建议,我将非常高兴。

【问题讨论】:

    标签: ssl certificate mqtt mosquitto ca


    【解决方案1】:

    这个问题最好在 iot.stackexchange.com 上提出。

    但是当我尝试从另一台机器上的客户端连接时,我收到以下错误:

    如果您在另一台机器上运行mosquitto_sub -h localhost,那么您将不再连接到远程机器。如果您在远程主机上正确修改了主机名,那么您是否也复制了正确的 CA 文件?

    【讨论】:

    • 不,我没有在另一台机器上使用“mosquitto_sub -h localhost”,我用我要连接的服务器的主机名替换了 localhost。我也确信我使用的 ca 文件是好的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2013-07-25
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    相关资源
    最近更新 更多