我已经创建了自己的CA证书,现在我想把它安装在我的Android Froyo设备(HTC Desire Z)上,以便设备信任我的证书.

Android将CA证书存储在/system/etc/security/cacerts.bks年的Java密钥库中.我将文件复制到我的计算机上,用portecle 1.5添加了我的证书,并将其推回到设备上.

现在,Android似乎不会自动重新加载文件.我在几篇博客文章中读到,我需要重启设备.这样做会导致文件再次被原始文件覆盖.

我的下一次try 是通过复制SD卡并使用设置菜单中的相应选项,从SD卡安装证书.设备告诉我证书已安装,但显然它不信任证书.此外,当我试图将密钥库复制到我的计算机时,我仍然会找到原始的cacerts.bks个密钥库.

那么,在Android 2.2设备上安装我自己的根CA证书作为可信证书的正确方法是什么?有没有一种方法可以通过编程实现呢?

推荐答案

在使用Android KitKat之前,您必须在设备上安装根目录才能安装新证书.

这是可能的,而且很容易.我能够在我的非根设备上安装Charles Web Debbuging代理证书,并成功地嗅探SSL流量.

http://wiki.cacert.org/FAQ/ImportRootCert中提取

在Android版本4.0之前,对于Android版本的姜饼&;Froyo,只有一个只读文件(/system/etc/security/cacerts.bks)包含信任存储区,其中包含Android默认信任的所有CA(‘SYSTEM’)证书.无论是系统应用程序还是使用Android SDK开发的所有应用程序都使用此功能.使用这些说明在Android姜饼,Froyo,.上安装CAcert证书

从Android 4.0(Android ICS/‘Ice Cream Sandwich’,Android 4.3‘Jelly Bean’&;Android 4.4‘KitKat’)开始,系统可信证书作为单独文件出现在文件夹‘/system/etc/security/’中的(只读)系统分区上.但是,用户现在可以轻松地添加他们自己的"用户"证书,这些证书将存储在"/data/misc/keychain/certs-add"中.

系统安装的证书可以在Android设备上的设置中进行管理->;安全性->;证书->;'而用户信任证书则在"用户"部分进行管理.当使用用户信任的证书时,Android将强制Android设备的用户实施额外的安全措施:当使用用户提供的证书时,必须使用PIN码、模式锁或密码来解锁设备.

将CAcert证书安装为"用户信任"证书非常容易.将新证书安装为"系统可信"-证书需要更多的工作(并且需要root访问),但它的优点是避免了Android锁屏要求.

From Android N (7.0) onwards它变得更难了,请看下面这段摘录的Charles proxy website条:

从Android N开始,你需要在应用程序中添加配置,以便

要将应用程序配置为信任Charles,您需要添加

添加一个文件res/xml/network\u security\u config.将xml添加到应用程序:

<network-security-config>    
    <debug-overrides> 
        <trust-anchors> 
            <!-- Trust user added CAs while debuggable only -->
            <certificates src="user" /> 
        </trust-anchors>    
    </debug-overrides>  
</network-security-config>

然后在应用程序 list 中添加对此文件的引用,如下所示:

<?xml version="1.0" encoding="utf-8"?> 
<manifest>
    <application android:networkSecurityConfig="@xml/network_security_config">
    </application> 
</manifest>

Android相关问答推荐

Jetpack DataStore原生lib已添加到Bundle 包:libdatastore_share_counter.so-那是什么?

写入排除例外以进行依赖性判断

长流与长流的比较<>

RemoteActivityHelper.startRemoteActivity不适用于Android Wear OS 4模拟器

Android开发:主题排版不适用于按钮文本

保护所有程序包文件和类

每次重启Android时预填入Room数据库

LaunchedEffect没有延迟时应用程序崩溃

Android 构建失败:找不到 flexbox2.0.1.aar

@Immutable 对数据类有什么好处?

如何正确地将图像上传到 Jetpack Compose 中的 LazyList 中的项目?

如何在 Android Jetpack compose 中为列表初始填充设置动画

如何在 Compose 中使用合并的单元格创建网格视图?

如何关闭可组合对话框?

compose 更改列表元素但lazyColumn不更改

Kotlin Coroutines 会取代 AsyncTask 吗?

为什么按钮没有拉伸到屏幕边缘?

如何从我的 android 应用程序中删除 QUERY_ALL_PACKAGES 权限?

如何在 Compose 中更改高程 colored颜色 ?

Kotlin Compose 全局页脚视图