我尝试使用安全的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
我觉得奇怪的是服务器问候的cipherSuite上只有unknownvalue,但ssl / tls对我来说是一个全新的话题......
您对可能导致此问题的原因或如何调试它有所了解吗?
如果你能给我一些建议,我将非常高兴。
答案 0 :(得分:0)
在iot.stackexchange.com上可以更好地提出这个问题。
但是当我尝试从另一台机器上的客户端连接时,我收到以下错误:
如果您在另一台计算机上运行mosquitto_sub -h localhost
,则表示您不再连接到远程计算机。如果您已在远程主机上正确修改了主机名,那么您是否还复制了正确的CA文件?