MQTT Mosquitto桥接到SAP IoT 4.0

2020-08-27 15:52发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


亲爱的社区,

当前,我正在使用SAP IoT 4.0做一个小的IoT用例。

一个带有传感器的小型设备正在收集数据(使用带有Python的paho mqtt客户端)并转发到在其上运行的本地代理(mosquitto v1.6.7),该代理应将所有消息桥接到SAP IoT 4.0租户。 为此,我需要在代理和客户端上配置TLS。 这是我的问题:我可以在IoT 4.0中创建设备证书(包含公钥和私钥),并从SAP获得DigiCertGlobalRootCA证书。 但是对于配置,我还需要本地代理的另一个证书(可以说是服务器证书和密钥)。 我尝试过它确实创建了另一个证书(为我的本地代理针对IoT 4.0中的同一设备实例),但是它失败了,并在我的mosquitto代理上给了我一个错误(请参阅下文)。 你有什么建议吗?

一旦我将使用CA证书创建的证书和密钥仅将设备连接到SAP IoT 4.0,连接就可以正常工作并发送数据。

还通过使用证书文件在本地代理和SAP IoT 4.0之间建立了桥接连接。 客户端和本地代理之间的连接失败,并从IoT 4.0生成了两个证书。

1)将客户端连接到本地代理时出现Mosquitto错误

2)连接到本地代理时客户端pyhton错误

 OpenSSL错误:错误:14094418:SSL例程:ssl3_read_bytes:tlsv1警报未知ca

 证书验证失败:无法获取本地发行者证书(_ssl.c:1056)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


亲爱的社区,

当前,我正在使用SAP IoT 4.0做一个小的IoT用例。

一个带有传感器的小型设备正在收集数据(使用带有Python的paho mqtt客户端)并转发到在其上运行的本地代理(mosquitto v1.6.7),该代理应将所有消息桥接到SAP IoT 4.0租户。 为此,我需要在代理和客户端上配置TLS。 这是我的问题:我可以在IoT 4.0中创建设备证书(包含公钥和私钥),并从SAP获得DigiCertGlobalRootCA证书。 但是对于配置,我还需要本地代理的另一个证书(可以说是服务器证书和密钥)。 我尝试过它确实创建了另一个证书(为我的本地代理针对IoT 4.0中的同一设备实例),但是它失败了,并在我的mosquitto代理上给了我一个错误(请参阅下文)。 你有什么建议吗?

一旦我将使用CA证书创建的证书和密钥仅将设备连接到SAP IoT 4.0,连接就可以正常工作并发送数据。

还通过使用证书文件在本地代理和SAP IoT 4.0之间建立了桥接连接。 客户端和本地代理之间的连接失败,并从IoT 4.0生成了两个证书。

1)将客户端连接到本地代理时出现Mosquitto错误

2)连接到本地代理时客户端pyhton错误

 OpenSSL错误:错误:14094418:SSL例程:ssl3_read_bytes:tlsv1警报未知ca

 证书验证失败:无法获取本地发行者证书(_ssl.c:1056)
付费偷看设置
发送
2条回答
hengyuye
1楼 · 2020-08-27 16:36.采纳回答

史蒂芬,你好

我认为您为本地代理创建的证书仅是自签名的。 这很可能会导致问题。

但是,您可以使用tls_insecure_set()方法在Paho客户端中禁用验证。

如果将其设置为true,它将不再验证主机名,并且连接应该正常工作。 不幸的是,这也使连接容易受到攻击。 [1]

致谢

Jan

[1] https://www.eclipse.org/paho/ clients/python/docs/

粗暴的香蕉
2楼-- · 2020-08-27 16:41

Hello Jan,

非常感谢您的回答。 我已经通过使用自签名证书保护客户端和本地代理之间的连接来解决此问题。 本地代理和IoT 4.0之间的连接通过IoT 4.0中的客户端证书和密钥来保护。 使用的Python版本还存在一个更深的麻烦,因为最终v3.7不再支持将CN字段与使用的证书匹配的服务器IP地址。 我必须编辑我的OpenSSL配置,并创建一个带有subjectAltName作为我的IP地址的新证书。 这样,我无需在客户端使用tls_insecure_set()。

一周热门 更多>