在将MQTT客户端与Python连接时如何防止直接访问证书文件

问题描述 投票:0回答:1

我正在成功使用pho MQTT客户端库来连接到AWS。创建mqtt客户端后,通过调用client.tls_set()提供必需的密钥和证书,此方法需要指向根证书,自己的证书和私钥文件的文件路径。

一切都很好,生活也很美好,除了我现在需要将此代码提供给不应直接访问这些证书和密钥文件的外部承包商。承包商混合使用PC和macOS系统。在macOS上,我们拥有我熟悉的钥匙串,但不知道如何使用python来实现这一点-示例/库引用会很棒。在PC上,我不知道哪种机制可以解决此问题。

此外,我无法控制承包商的PC / Mac,也就是说,我无法撤销其钥匙串中的项目。我该如何解决?

很抱歉在安全方面如此菜鸟。无需提供完整的示例,只需参考要阅读的文章,要遵循的课程和要搜索的关键字就可以了-尽管当然也会很高兴地接受代码示例。

python security mqtt tls1.2
1个回答
1
投票

简短的回答:您没有。

更长的答案:

如果您希望他们能够连接,则别无选择,只能给他们提供标识该设备/用户的证书/专用密钥。

您拥有的控制权是为每个承包商提供他们自己的唯一密钥/证书,如果您认为密钥/证书已被遗漏,请在CA处撤销该证书,并让经纪人检查吊销列表。

您可以使用密码保护私钥,但再次必须将其包含在代码中或将其提供给承包商。

即使承包商使用的设备具有可以安全地存储私钥的硬件密钥库(安全元素),所有要做的就是阻止用户提取密钥并将其移至另一台机器,他们会仍然可以将私钥用于他们在该计算机上想要的任何内容。

最好的缓解方法是确保证书的寿命很短,并且可以续订该证书,这意味着,如果证书泄漏,那么即使您没有注意到并明确吊销它,它也会迅速停止工作。

© www.soinside.com 2019 - 2024. All rights reserved.