Android Pinning 技术文档
2024-12-24 06:00:10作者:柏廷章Berta
1. 安装指南
1.1 使用 Gradle 安装
如果你使用 Gradle 构建你的 Android 项目,可以通过在 build.gradle 文件中添加以下依赖来引入 AndroidPinning 库:
dependencies {
implementation 'org.thoughtcrime.ssl.pinning:AndroidPinning:1.0.0'
}
1.2 手动导入
如果你不使用 Gradle,也可以手动将 AndroidPinning 库导入到你的项目中。首先,从 GitHub 下载库的源代码,然后将其作为库项目导入到你的 Android Studio 项目中。
2. 项目的使用说明
AndroidPinning 是一个独立的 Android 库项目,旨在简化 Android 应用中 SSL 连接的证书固定(Certificate Pinning),以减少对证书颁发机构(CA)的依赖。
2.1 证书固定的概念
证书固定是一种安全措施,通过验证证书链是否符合预期,即使证书是由 CA 签名的,也能防止其他 CA 为你的域名创建伪造证书。这对于移动应用来说尤为重要,因为大多数移动应用只连接到一组特定的后端服务。
2.2 使用场景
- 自签名证书:如果你控制后端服务,可以使用自签名证书,并将证书与应用一起分发。
- CA 签名证书:如果你必须使用 CA 签名的证书,可以通过证书固定来增强安全性。
3. 项目 API 使用文档
3.1 PinningHelper 类
PinningHelper 类提供了两个主要方法来帮助你实现证书固定:
3.1.1 getPinnedHttpsURLConnection
该方法用于创建一个带有证书固定的 HttpsURLConnection 对象。
String[] pins = new String[] {"f30012bbc18c231ac1a44b788e410ce754182513"};
URL url = new URL("https://www.google.com");
HttpsURLConnection connection = PinningHelper.getPinnedHttpsURLConnection(context, pins, url);
return connection.getInputStream();
3.1.2 getPinnedHttpClient
该方法用于创建一个带有证书固定的 HttpClient 对象。
String[] pins = new String[] {"f30012bbc18c231ac1a44b788e410ce754182513"};
HttpClient httpClient = PinningHelper.getPinnedHttpClient(context, pins);
HttpResponse response = httpClient.execute(new HttpGet("https://www.google.com/"));
3.2 PinningTrustManager 和 PinningSSLSocketFactory
你也可以直接使用 PinningTrustManager 和 PinningSSLSocketFactory 来实现更高级的证书固定配置。
String[] pins = new String[] {"40c5401d6f8cbaf08b00edefb1ee87d005b3b9cd"};
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
schemeRegistry.register(new Scheme("https", new PinningSSLSocketFactory(getContext(), pins, 0), 443));
HttpParams httpParams = new BasicHttpParams();
ClientConnectionManager connectionManager = new ThreadSafeClientConnManager(httpParams, schemeRegistry);
DefaultHttpClient httpClient = new DefaultHttpClient(connectionManager, httpParams);
HttpResponse response = httpClient.execute(new HttpGet("https://www.google.com/"));
4. 项目安装方式
4.1 通过 Gradle 安装
如前所述,通过在 build.gradle 文件中添加依赖来安装 AndroidPinning 库:
dependencies {
implementation 'org.thoughtcrime.ssl.pinning:AndroidPinning:1.0.0'
}
4.2 手动导入
手动下载并导入 AndroidPinning 库项目到你的 Android Studio 项目中。
通过以上步骤,你可以轻松地在 Android 项目中实现证书固定,从而提高应用的安全性。
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0152- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
LongCat-Video-Avatar-1.5最新开源LongCat-Video-Avatar 1.5 版本,这是一款经过升级的开源框架,专注于音频驱动人物视频生成的极致实证优化与生产级就绪能力。该版本在 LongCat-Video 基础模型之上构建,可生成高度稳定的商用级虚拟人视频,支持音频-文本转视频(AT2V)、音频-文本-图像转视频(ATI2V)以及视频续播等原生任务,并能无缝兼容单流与多流音频输入。00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0112
项目优选
收起
暂无描述
Dockerfile
733
4.75 K
Ascend Extension for PyTorch
Python
617
795
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.01 K
1.01 K
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
433
395
华为昇腾面向大规模分布式训练的多模态大模型套件,支撑多模态生成、多模态理解。
Python
145
237
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
1.18 K
152
暂无简介
Dart
983
252
Oohos_react_native
React Native鸿蒙化仓库
C++
348
403
昇腾LLM分布式训练框架
Python
166
198
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.68 K
989