Android 应用程序以安全和正确的方式存储客户端证书
Android app storing client certificates in a secure and proper way
我正在构建一个需要基于证书的身份验证的 Android 应用程序。我不太熟悉 Java/Kotlin 编程范式。
证书将通过以下两种方式之一颁发,通过 API(我控制)或通过 MobiControl 等设备管理工具(这是目前唯一的一种,但我们可能必须使用其他设备管理工具)。
我需要一种安全存储证书的方法,但我们可以使用设备管理套件自动部署它们,并且它们将无限期保留。证书存储是否足够? https://developer.android.com/reference/java/security/cert/CertStore
在 unix 中,我会将它们存储在 /etc/ssl/certs
中,但我不知道这是否是一种有效的 Android 方法。
如果应用想要存储仅供该应用使用的客户端证书,我强烈建议使用 AndroidKeyStore
system. See also this blog entry。
如果设备支持,则私钥会加密存储并且不能被应用程序访问(仅使用)。事件应用程序本身无法提取私钥,但它可以使用私钥,例如使用 java Cipher
实例签署或解密数据。
此外,您可以只设置一个标志,即使用证书需要先进行设备身份验证(例如通过指纹),然后应用才能使用它。
我正在构建一个需要基于证书的身份验证的 Android 应用程序。我不太熟悉 Java/Kotlin 编程范式。
证书将通过以下两种方式之一颁发,通过 API(我控制)或通过 MobiControl 等设备管理工具(这是目前唯一的一种,但我们可能必须使用其他设备管理工具)。
我需要一种安全存储证书的方法,但我们可以使用设备管理套件自动部署它们,并且它们将无限期保留。证书存储是否足够? https://developer.android.com/reference/java/security/cert/CertStore
在 unix 中,我会将它们存储在 /etc/ssl/certs
中,但我不知道这是否是一种有效的 Android 方法。
如果应用想要存储仅供该应用使用的客户端证书,我强烈建议使用 AndroidKeyStore
system. See also this blog entry。
如果设备支持,则私钥会加密存储并且不能被应用程序访问(仅使用)。事件应用程序本身无法提取私钥,但它可以使用私钥,例如使用 java Cipher
实例签署或解密数据。
此外,您可以只设置一个标志,即使用证书需要先进行设备身份验证(例如通过指纹),然后应用才能使用它。