【问题标题】:How to prevent direct access to cert files when connecting MQTT client with Python使用 Python 连接 MQTT 客户端时如何防止直接访问证书文件
【发布时间】:2020-09-23 19:39:32
【问题描述】:

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

一切都很好,生活也很好,只是我现在需要将此代码提供给不应直接访问这些证书和密钥文件的外部承包商。承包商混合使用 PC 和 macOS 系统。在 macOS 上,我们有我熟悉的钥匙串,但不知道如何使用 python 来解决这个问题 - 示例/库参考会很棒。在 PC 上,我不知道解决这个问题的流行机制是什么。

此外,我无法控制承包商的 PC/Mac - 即,我无法撤销他们钥匙串中的项目。我该如何解决?

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

【问题讨论】:

    标签: python security mqtt tls1.2


    【解决方案1】:

    简短的回答:你不知道。

    更长的答案:

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

    您的控制是向每个承包商颁发他们自己的唯一密钥/证书,如果您认为密钥/证书被遗漏,请在 CA 吊销证书并让代理检查吊销列表。

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

    即使承包商使用的是带有硬件密钥库(安全元件)的设备,您可以在其中安全地存储私钥,但他们所做的只是阻止用户提取密钥并将其移动到另一台机器上,他们仍然可以在该机器上使用私钥来完成他们想要的任何事情。

    最好的缓解措施是确保证书的生命周期较短并控制证书的更新,这意味着如果证书泄露,即使您没有注意到并明确撤销它,它也会迅速停止工作。

    【讨论】:

    • 我很害怕这个,但是好的,然后撤销证书。感谢您为我解决这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多