簡體   English   中英

Android-證書固定與公鑰固定

[英]Android-Certificate pinning vs public key pinning

我試圖了解證書固定和公鑰是如何完成的。 閱讀不同的博客后,我對這個概念更加困惑,因此我添加了這個問題。我想知道 1.How to implement certificate pinning with an example

2.如何通過實例實現公鑰固定

證書或公鑰密鑰只是例外連接證書信息的“白名單”,因此您可以確認您連接的是您希望連接的人。 基本上它可以在中間情況下檢測到人。

檢查出來是一個很好的概述。

證書固定和公鑰固定之間的唯一區別是您在白名單中檢查的數據。 由於證書包含公鑰,因此您可以將證書視為正在檢查的數據的超集。 您檢查的內容將決定您希望檢測次要證書“更改”的嚴格程度。

如上面的鏈接所述,還有許多實現固定的方法。 這只取決於您決定檢查的內容以及如何將其存儲在白名單中。 由於您正在談論Android,上面的鏈接提到了Android推薦的方式,因此您可能希望調查一下。

您可能希望看到的另一個實現是Mozilla pining實現 ,它使用以十六進制形式存儲的公鑰的sha256哈希的白名單來固定公鑰。

更新:如@Robert所述,除標准證書鏈檢查外,還應進行證書鎖定。 它不應取代標准證書鏈檢查,特別是在根/中間證書級別進行處理時。

固定根或中間壓縮會降低安全性,但對證書更改更具彈性。 此類設置的使用取決於您使用證書固定的原因以及是否可以輕松更新客戶端白名單。 這些是您根據具體情況進行的安全權衡。

1.如何通過一個例子實現證書綁定

在我看來,您不應該遵循這種方法,因為您需要在移動應用程序二進制文件中對證書進行硬編碼,因此要求每次更新它們時都需要發布一個新版本的移動設備,並且需要一些支持證書和將需要強制所有用戶升級。 在所有用戶升級后,您將需要發布另一個版本的移動應用程序以刪除舊證書。

2.如何通過實例實現公鑰固定

這里最好的方法是使用移動證書鎖定生成器在線工具,該工具將創建適當的網絡安全配置文件以添加到 Android 應用程序。

我建議您閱讀我在另一個問題中給出的這個答案中的Preventing MitM Attacks部分,您將在其中學習如何實現靜態證書固定以及如何繞過它:

在移動應用程序中實現靜態證書固定的最簡單快捷的方法是使用 [移動證書固定生成器](移動證書固定生成器),它接受您想要固定的域列表並為您生成正確的在 Android 和 iOS 上使用的證書固定配置。

給它一個要固定的域列表:

移動證書固定生成器網頁上的配置選項卡

該工具會為您生成 Android 配置:

Android 證書固定配置

該工具甚至作為如何將配置添加到您的移動應用程序的說明,您可以在證書固定配置框下方找到。 他們還提供了一個適用於AndroidiOS 的實例 Pin 測試應用程序,這是一個分步教程。

這種方法不需要每次使用相同的公鑰更新證書時都發布新的移動應用程序。

暫無
暫無

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

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