Openssl MOSQUITO-证书启用桥中的客户端代理不提供证书

Openssl MOSQUITO-证书启用桥中的客户端代理不提供证书,openssl,mqtt,x509certificate,tls1.2,mosquitto,Openssl,Mqtt,X509certificate,Tls1.2,Mosquitto,我正在尝试在本地网络和运行mqtt服务器的云之间建立TLS mqtt网桥,但无法创建它 我已经配置了一个代理(称之为远程代理)来接受经过证书验证的连接(需要证书,使用身份作为用户名、密钥文件、证书文件和cafile),并且在配置了客户端证书之后,我能够直接发布和订阅主题(使用mosquitto_pub和mosquitto_sub) 当我尝试配置从另一个代理(称为local_broker)到远程代理的网桥时,再次使用证书身份验证,它失败了。远程\u代理中的日志显示openssl错误,指出“对等方未

我正在尝试在本地网络和运行mqtt服务器的云之间建立TLS mqtt网桥,但无法创建它

我已经配置了一个代理(称之为远程代理)来接受经过证书验证的连接(需要证书,使用身份作为用户名、密钥文件、证书文件和cafile),并且在配置了客户端证书之后,我能够直接发布和订阅主题(使用mosquitto_pub和mosquitto_sub)

当我尝试配置从另一个代理(称为local_broker)到远程代理的网桥时,再次使用证书身份验证,它失败了。远程\u代理中的日志显示openssl错误,指出“对等方未提供证书”(请参阅远程\u代理日志)。在本地服务器上,在SSL握手完成之前,连接被声明为失败(请参见下面的本地_代理日志),因此甚至没有启动mqtt会话。从日志中可以看出,双方似乎都在启动TLS握手,但由于客户端未正确识别自身,因此握手失败

远程代理日志:

2020-10-05T23:55:17Z: New connection from 127.0.0.1 on port 8883.
2020-10-05T23:55:17Z: OpenSSL Error[0]: error:1417C0C7:SSL routines:tls_process_client_certificate:peer did not return a certificate
2020-10-05T23:55:17Z: Socket error on client <unknown>, disconnecting.
2020-10-05T23:55:17Z: Bridge local.mqttserver.local-remote doing local SUBSCRIBE on topic shelleys/#
2020-10-05T23:55:17Z: Bridge local.mqttserver.local-remote doing local SUBSCRIBE on topic tele/#
2020-10-05T23:55:17Z: Connecting bridge (step 1) local-remote (localhost:8883)
2020-10-05T23:55:17Z: Connecting bridge (step 2) local-remote (localhost:8883)
2020-10-05T23:55:17Z: Bridge mqttserver.local-remote sending CONNECT
2020-10-05T23:55:17Z: OpenSSL Error[0]: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
本地\u broker网桥配置包含在conf.d目录中的一个文件中,其内容如下(目前我正在使用ssh隧道访问云计算机-因此本地主机名作为远程\u broker IP地址的参考):

参数bridge_keyfile被注释掉,因为桥接连接的本地_代理的行为是客户端(或者我所理解的),因此不需要它,但我尝试取消注释它,但行为没有改变

证书由同一CA签名,其公共证书存在于两个代理中,并在本地代理的“桥文件”和远程代理的CA文件中的配置中引用。远程代理证书已颁发给“localhost”,以便它与域名中提到的地址参数匹配

我尝试了其他几个可能影响连接行为的网桥TLS参数,如“网桥不安全”、“网桥协议版本”、“网桥需要ocsp”和“网桥TLS版本”,但都没有改变行为

有人知道本地代理桥客户端发送证书并识别自身的配置中缺少什么吗


谢谢。

@hardillb你说得对。我已经检查并重复了我的配置,与您的评论有关,并且在成功连接之后。 最终配置如下所示。我不知道为什么之前我在激活bridge_密钥文件的情况下测试它时它不工作

connection local_remote
address localhost:8883

topic shelleys/# out
topic tele/# out

bridge_cafile /etc/mosquitto/ca_certificates/RootCA.crt
bridge_certfile /etc/mosquitto/certs/bridgeClient.crt
bridge_keyfile /etc/mosquitto/certs/bridgeClient.key

感谢您的帮助。

如果远程代理使用TLS身份验证,则作为客户端时需要密钥文件。
connection local_remote
address localhost:8883

topic shelleys/# out
topic tele/# out

bridge_cafile /etc/mosquitto/ca_certificates/RootCA.crt
bridge_certfile /etc/mosquitto/certs/bridgeClient.crt
bridge_keyfile /etc/mosquitto/certs/bridgeClient.key