签名的核心就是provision profile要与当前的bundle id及本地的私钥相匹配。

teamid:每个开发者账号都会对应一个teamid。企业的开发这账号除了对应一个teamid外,下面的每一个开发者还会有一个personal team,当然会有不同的teamid。

xcode中自动签名选teamid的作用就是找到teamid对应的profile及证书。

以下为推测的过程,仅供参考:

当选择自动签名时,首先需要选择team,当选择team过后,xcode会根据teamid去本地的profile文件夹中去遍历此teamid对应的provision profile文件,从中找到一个跟本地私钥匹配的provision profile文件,查找结束(这个过程不需要联网,跟手动签名一致,因为手动签名也是自己手动去选择provision profile)。

此时可能会发生两种情况:

  1. 目标provision profile 文件不存在。

此时xcode会联网,去开发者网站遍历此teamid对应的证书。此时又会有三种情况:

1)teamid对应的证书不存在,那么xcode会重新创建一个证书(当然本地会创建对应的私钥)并用这个证书去创建一个新的provision profile。

2)teamid对应的证书在本地都没有对应的私钥,那么xcode会重新创建一个证书(当然本地会创建对应的私钥)并用这个证书去创建一个新的provision profile。(这时候还有一种情况是创建的证书达到上限,此时有两种解决方案:一种是换一个子账号,另一种是把别人电脑上的私钥导到自己电脑上)。

3)teamid对应的证书中至少有一个对应的私钥在本机存在,那么就用这个证书重新创建一个provision profile。

  1. 找得到provision profile,但是此provision profile对应的本机的证书不存在。xcode会revoke开发者网站上的certificate,同时重新创建一个certificate(当然本地会创建对应的私钥)并用这个certificate去创建一个新的provision profile。

关于自动签名证书问题的终极解决方案:

  1. 把本机和开发者网站上本机的证书及本机中的profile文件都删除,然后xcode只登陆需要的那个账号,然后重启xcode,所有证书及profile都让xcode重新生成。
  1. 如果一个账号创建的证书达到上限,并且只想用一个账号的时候,可以把别人电脑上的私钥导到自己电脑上。

xcode 自动签名原理的更多相关文章

  1. xcode 自动签名、手动签名

    手动签名:需要手动生成p12文件(私钥),然后将对应的公钥上传到开发者网站,生成证书,进一步生成对应的描述文件,然后在xcode中手动指定描述文件,这个描述文件中包含与本地p12文件对应的证书. 自动 ...

  2. Xcode自动选择证书

    从xcode3时代习惯了手动选择证书,即 Provisioning Profile和 Code Signing Identify. 而随着团队扩大,应用量增多,需要管理的证书也越来越多,每次从长长的l ...

  3. iOS 应用签名原理&重签名

    在苹果的日常开发中,真机测试与打包等很多流程都会牵扯到各种证书,CertificateSigningRequest,p12等.但是很多相应的开发者并不理解iOS App应用签名的原理和流程.今天着重讲 ...

  4. ionic ios 友盟多渠道/自动签名/加固之腾讯云。乐固

    之前写了一篇文章主要是介绍使用gradle进行多渠道分发处理的文章--链接:http://www.cnblogs.com/happen-/p/6029387.html 最近在做app上线的处理,发现某 ...

  5. 友盟ionic多渠道自动签名app

    这几天公司的运营部门要求添加流量统计功能,集成了友盟的插件,中间遇到很多的问题,在这里说明记录一下,为遇到相同问题的朋友们减少麻烦 问题一.插件的使用直接将友盟sdk系在放置到项目根目录下plugin ...

  6. spring boot实战(第十三篇)自动配置原理分析

    前言 spring Boot中引入了自动配置,让开发者利用起来更加的简便.快捷,本篇讲利用RabbitMQ的自动配置为例讲分析下Spring Boot中的自动配置原理. 在上一篇末尾讲述了Spring ...

  7. [BS-08]注意Xcode自动提示好用但极易出错,务必看清方法的名称

    今日在写一个UIBarButtonItem的分类时,在Xcode自动提示时,因未仔细查看,错将需要用到setBackgroundImage的地方,选择成setImage,结果导致button的boun ...

  8. APK签名原理

    网上已有多篇分析签名的类似文章,但是都有一个共同的问题,就是概念混乱,混乱的一塌糊涂. 在了解APK签名原理之前,首先澄清几个概念: 消息摘要 -Message Digest 简称摘要,请看英文翻译, ...

  9. 360加固apk并自动签名

    我们知道Android加混淆之后,代码的安全性得到了提高,即使你hook,反编译得到的也是乱码的,对于阅读性造成了影响,为了增强代码的破解难度,我们通常退对apk进行加固,常见的有腾讯,360,爱加密 ...

随机推荐

  1. makefile简单学习

    前言 在C语言中,我们需要将源代码生成可执行的程序.这里面其实要经过非常多的步骤.参看下图: 这中间主要通过make命令,读取一种名为“makefile”或“Makefile”的文件来实现软件的自动化 ...

  2. 剖析 GSM 加密机制以及位置更新的过程

    你有没有想过打开手机时会发生什么?它是如何以安全的方式与网络进行通信?几乎所有人都知道TCP / IP,并且可能许多人还是专家,但是谈到电信方面,很少有人知道它的内部原理. gsm中的消息结构是什么? ...

  3. 关于org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Incorrect string value: '\xE5\x91\xBC\xE5\x92\x8C...' for column 'visit_addr' at row 1的问题

    当我们使用Hibernate框架像表中插入一条新的数据时控制台可能会报这样的错误“org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Incorrec ...

  4. L2-005. 集合相似度(STL)*

    L2-005. 集合相似度 参考博客 #include<cstdio> #include<set> #include<cstdlib> using namespac ...

  5. linux局域网内挂载其它操作系统目录

    一.linux挂载windows 1.windows目录打开共享: 2.mount -t cifs -o username=admin***tor,password=abc //192.168.*** ...

  6. 在干净的ubuntu 14.10上编译Qemu2.2.0的过程

    下载Qemu的源代码 从官网http://wiki.qemu.org/Main_Page 中下载最新的源代码,目前是2.2.0. 安装依赖库和编译 编译过程分两步1. ./configure 2. m ...

  7. 浅谈JS的数组遍历方法

    用过Underscore的朋友都知道,它对数组(集合)的遍历有着非常完善的API可以调用的,_.each()就是其中一个.下面就是一个简单的例子: var arr = [1, 2, 3, 4, 5]; ...

  8. Hystrix 学习使用

    说明: 每次调用创建一个新的HystrixCommand,把依赖调用封装在run()方法中 执行execute()/queue做同步或异步调用 请求接收后,会先看是否存在缓存数据,如果存在,则不会继续 ...

  9. python logging配置时间或大小轮转

    python中的很多模块是非常牛X的,之前提到过logging模块(其功能类似于java下的Log4j ),由于最近一个涉及网络排障的脚本需要日志输出,这里就使用了python的logging模块去实 ...

  10. DL服务器主机环境配置(ubuntu14.04+GTX1080+cuda8.0)解决桌面重复登录

    DL服务器主机环境配置(ubuntu14.04+GTX1080+cuda8.0)解决桌面重复登录 前面部分是自己的记录,后面方案部分是成功安装驱动+桌面的正解 问题的开始在于:登录不了桌面,停留在重复 ...