如何在Android中安装CharlesProxy ssl证书

时间:2016-04-02 07:50:10

标签: android ssl charles-proxy

我通过代理连接移动设备和系统,并捕获移动设备中的呼叫。

当捕获“https”请求时,我无法从中获得响应。 在系统中出现以下错误: -

        List<TableItem> tableItems = new List<TableItem>();
        ListView listView;

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.HomeScreen);
            listView = FindViewById<ListView>(Resource.Id.List);
            EditText _filterText = FindViewById<EditText>(Resource.Id.editInp);
           tableItems.Add(new TableItem() { Heading = "Vegetables", SubHeading = "65 items" });
            tableItems.Add(new TableItem() { Heading = "Fruits", SubHeading = "17 items" });


            _filterText.TextChanged += (object sender, Android.Text.TextChangedEventArgs e) => {
                // filter on text changed
                var searchTerm = _filterText.Text;
                var updatedTableItems = tableItems.Where(
                    // TODO Fill in your search, for example:
                    tableItem => tableItem.Heading.ToLower().Contains(searchTerm.ToLower()) ||
                                 tableItem.SubHeading.ToLower().Contains(searchTerm.ToLower())
                ).ToList();
                var filteredResultsAdapter = new HomeScreenAdapter(this, updatedTableItems);
                listView.Adapter = filteredResultsAdapter;
            };
            listView.Adapter = new HomeScreenAdapter(this, tableItems);

            listView.ItemClick += OnListItemClick;
        }

        protected void OnListItemClick(object sender, Android.Widget.AdapterView.ItemClickEventArgs e)
        {
            var selectedTableItem = e.Parent.GetItemAtPosition(e.Position);
             }
    }
}



public class TableItem
    {

        public string Heading { get; set; }
        public string SubHeading { get; set; }

    }

注意:我在系统上安装了charles proxy ceritificate,并在Mozilla Firefox中导入了证书。我能够从系统

上的Mozilla浏览器获得“https”的响应

我已经在手机上加载了charlesproxy.com/getssl。它说“您的设备上已经安装了证书”

3 个答案:

答案 0 :(得分:3)

当您从charlesproxy.com/getssl下载证书时,您的移动设备是否通过您尝试设置的Charlesproxy实例连接?

更新版本的Charlesproxy创建自定义证书,因此只有在安装证书时设备被代理时,SSL代理设置才有效。如果不是,您可能希望将其删除并在通过Charles连接时再次安装。

我还想在安装证书后重启charles并重新启动移动设备。也许它是迷信的,但我曾经遇到SSL调用仅在重启后才能工作的情况。

答案 1 :(得分:0)

在设备上安装ssl证书只会对浏览器的ssl日志有所帮助,以跟踪你必须执行以下操作的应用程序的ssl数据。 将文件res / xml / network_security_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>

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

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

来源:https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

答案 2 :(得分:0)

尽管有很多问题排查,但我仍然无法解决将我的Personal Android手机连接到Charles代理的问题-我总是会遇到网络出现的错误或OP中的错误。

我进入了手机的User Credentials系统设置。我从过去的尝试和过去两年中安装的其他计算机中获得了20多个查尔斯证书,我删除了所有证书,一切又开始正常工作。希望对您有所帮助。