本文分享我在Android设备上使用mTLS证书时遇到的各种坑,以及如何通过.NET MAUI开发专属的"安全套壳浏览器"来优雅解决这些问题的完整实战经验。
1. 引言在上一篇文章中,我们不仅配置了Nginx的mTLS(双向认证)"叹息之墙",还详细介绍了OpenClaw的安全部署的一些实践,目前服务器端的防御可以说是固若金汤了。
但当我们将视线转回移动端时,残酷的现实给了我们当头一棒。你会发现自己被挡在了自己亲手筑起的墙外。
就算我们成功安装了用户证书,无论是系统自带的浏览器、Chrome还是Firefox,,往往表现得极其令人崩溃:死活不弹出证书选择框。折腾了各种系统的凭据安装配置,依然无解。
既然现成的工具都在"装死",作为.NET开发者,我们干脆掀桌子自己搞。今天,我将带大家使用 .NET MAUI,手搓一个"安全套壳浏览器"。我们将夺回底层网络的控制权,绕开系统的恶心限制,实现真正的无感安全访问。
项目开源地址:https://github.com/sangyuxiaowu/StealthClaw?WT.mc_id=DT-MVP-5005195
2. 核心思路:霸王硬上弓常规浏览器的证书是由Android系统的KeyChain统一接管的,规矩极多。但在MAUI中,我们可以利用WebView控件,并通过自定义Android原生的WebViewClient,拦截Nginx发来的证书请求。
我们的策略很简单:彻底无视系统的证书库,在App内部直接读取本地的.pfx文件,并在底层回调中强行把证书塞给服务器。
3. 构建MAUI极简界面我们需要一个设置页面(导入证书、填写密码和URL)以及一个承载网页的主页面。
3.1 SettingsPage.xaml (UI)提供基础的配置输入框,并利用MAUI的FilePicker将用户选择的证书文件拷贝到App的私有安全目录中。