簡體   English   中英

使用 Python 連接 MQTT 客戶端時如何防止直接訪問證書文件

[英]How to prevent direct access to cert files when connecting MQTT client with Python

我正在使用 pho MQTT 客戶端庫成功連接到 AWS。 創建 mqtt 客戶端后,通過調用 client.tls_set() 提供必要的密鑰和證書。此方法需要根證書、自己的證書和私鑰文件的文件路徑。

一切都很好,生活也很好,只是我現在需要將此代碼提供給不應直接訪問這些證書和密鑰文件的外部承包商。 承包商混合使用 PC 和 macOS 系統。 在 macOS 上,我們有我熟悉的鑰匙串,但不知道如何使用 python - 示例/庫參考會很棒。 在 PC 上,我不知道解決這個問題的流行機制是什么。

除此之外,我無法控制承包商 PC/Mac - 即,我無法撤銷他們鑰匙串中的項目。 我該如何解決這個問題?

很抱歉在安全方面是個菜鳥。 無需提供完整的示例,只需參考要閱讀的文章、要遵循的課程和要搜索的關鍵字就可以了——盡管代碼示例當然也會被愉快地接受。

簡短的回答:你沒有。

更長的答案:

如果您希望他們能夠連接,那么您別無選擇,只能向他們提供標識該設備/用戶的證書/私鑰。

您擁有的控制權是向每個承包商頒發他們自己唯一的密鑰/證書,如果您認為密鑰/證書被遺漏,請在 CA 吊銷證書並讓代理檢查吊銷列表。

您可以使用密碼保護私鑰,但您必須再次將其包含在代碼中或將其提供給承包商。

即使承包商使用帶有硬件密鑰庫(安全元件)的設備,您可以在其中安全地存儲私鑰,所要做的只是阻止用戶提取密鑰並將其移動到另一台機器上,他們仍然會能夠在該機器上使用私鑰來實現他們想要的任何東西。

最好的緩解措施是確保證書的生命周期較短並控制更新證書,這意味着如果證書泄露,即使您沒有注意到並明確撤銷它,它也會迅速停止工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM