Tls

來自同一公司的移動應用程序和後端的自簽名證書

  • May 11, 2018

我公司的產品是連接到我們自己的後端的 Android 和 iOS 移動應用程序。移動應用程序的所有互動都是與我們自己公司開發的後端。

在這種情況下,後端是否可以使用自簽名證書(而不是從 CA 獲取證書)並將此自簽名證書固定在移動應用程序上以使其更安全。

請讓我知道這個策略是否有意義(或者我們仍然需要從 CA 獲得 SSL 證書)

是的,這種(證書固定)是首選方法,因為它消除了對外部權威的依賴,並使中間人攻擊更加困難。

另一個步驟是隱藏應用程序內的固定證書,以防止其被輕易編輯。

你可以兩者都做。首先在“正常”TLS 設置中使用諸如Let’s Encrypt 之類的 CA。然後將您的客戶端配置為固定證書的公鑰部分,以便可以根據 LE 的策略(在 90 天后過期)重新生成證書,而無需更改公鑰本身。

多種固定方法可以通用(當您的 TLS 提供商允許您控制時),其中一些是特定於協議的,例如HPKP

Firefox 和 Chrome對經過驗證的證書鏈終止於使用者定義的信任錨(而不是內置的信任錨)的固定主機**禁用 pin 驗證。**這意味著對於導入自定義根證書的使用者,所有固定違規都將被忽略。

如 HPKP 的 MDN 文章(如上鍊接)中所述,如果您使用自簽名證書,則會忽略 HTTP 級別固定。更糟糕的是,如果您正在使用諸如libcurl不保留任何狀態的庫,則固定請求將被遺忘。

理想情況下,您的 TLS 提供商將允許您在敏感資訊被發送給攻擊者之前強制執行您的自定義公鑰固定。您應該驗證您的客戶端固定是否按預期工作,方法是使用具有 LE 簽名的有效證書的測試伺服器,但具有不同的公鑰來破壞 pin。

為什麼我們仍然需要 CA?CA 仍然很有用,因為如果您的伺服器受到威脅,他們可以根據您的請求撤銷您的證書;這比移動包管理器接受您更新的客戶端要快。此外,如果您的客戶的固定程式碼中斷(可能您的上游庫已更改),您至少仍將擁有傳統未固定 TLS 工作流程的安全性。

引用自:https://crypto.stackexchange.com/questions/59096