最新消息:iOS编程开发交流群(6906921) ,Mac.Cocoa开发交流群(7758675) 欢迎iOS/macOS开发编程爱好及学习者加入!

为iOS的mobileconfig文件进行签名

iOS 天狐 115802浏览 46评论

Safari获取UDID需要安装.mobileconfig文件,
但是,我们在安装了.mobileconfig后,返现配置描述文件打 开显示“unsigned” 或者“尚未签名”这样的情况,所以接下来的工作就是让我们的.mobileconfig文件看起来更加安全一些。

.mobileconfig签名网络上大多都是使用ssl证书进行签名(事实上,苹果官方ota也是用https证书进行签名的),ssl签名可以参考

http://www.rootmanager.com/iphone-ota-configuration/iphone-ota-setup-with-signed-mobileconfig.html

本文主要讲,使用苹果开发者证书进行签名达到目的

本文三种方法,一种是刀耕火种的一步步操作,一种使用脚本签名,一种是用系统自带命令签名。

推荐第三种方法!!!!!!!!

一.导出苹果证书进行签名

1.从钥匙串(keychain)中导出证书

实用工具->钥匙串访问->选择要导出的证书,导出生成p12文件 InnovCertificates.p12

然后转换成 InnovCertificates.pem 文件

2. p12换成pem格式方法

p12在线转换pem   https://www.sslshopper.com/ssl-converter.html

(证书)cer.p12文件 转cer.pem文件

openssl pkcs12 -clcerts -nokeys -out cer.pem -in cer.p12

(私钥)key.p12文件转key.pem文件

openssl pkcs12 -nocerts -out key.pem -inkey.p12

3.下载 Apple Root Certificate 和 Apple Intermediate Certificate

(对于本篇文章 .mobileconfig文件的验证我使用了苹果的以下两个证书.

Apple Root Certificate(苹果根证书)

Apple Application Integration Certificate (苹果应用集成证书 )

你也可以使用这些证书或者苹果提供的其他证书 地址: http://www.apple.com/certificateauthority/

下载的文件中包括证书(cer)和私钥(key)

(在命令行中读取证书,参考链接 info.ssl.com/article.aspx?id=12149)

根据这个文件我们可以解压出来证书.

4.签名和验证.mobileconfig文件

上边所有文件准备号后,运行命令行工具,运行以下命令

结果就是签名并且验证后的 .mobileconfig文件

二.脚本签名

借助于强大的github,找到了一个python脚本进行签名

地址:https://github.com/nmcspadden/ProfileSigner

1.签名一个mobileconfig

profile_signer.py与 mobileconfig 放在同一目录,终端进入目录执行

2.加密一个mobileconfig

3.签名并且加密一个mobileconfig

"3rd Party Mac Developer Application"为你的证书在钥匙串中的全名,选择证书=>显示简介=>复制常用名称加上引号即可,比如

"iPhone Developer: jakey.shao xxxx@xxx.com"

"iPhone Distribution: Skyfox Network Technology Co., Ltd."

66911171-EE9C-4DB7-BFCE-6564CC1B4E1A如果能正确读取到证书,会提示如上图所示,点击允许即可!

三.系统自带命令签名

在终端命令行中输入以下命令,查看可以用的证书。

注意:证书一定在钥匙串中是信任的。

签名描述文件

四.Ruby脚本ssl证书签名

笔者根据官方demo,把profile自动生成或读取 并ssl证书签名逻辑单独拿了出来。

https://github.com/shaojiankui/ProfileSigner-Ruby

五.Safari安装

用以上任意一种方法签名后,安装描述文件发现未签名变成了已签名,红色变成了绿色啦.安装的时候没有警告啦...茉莉花香啊!!!

传送门

参考文章&英文原文:

http://stackoverflow.com/questions/28355902/ios-mobileconfig-file-still-not-verified-but-close-i-see-certification

转载请注明:天狐博客 » 为iOS的mobileconfig文件进行签名

微信 OR 支付宝 扫描二维码
为天狐 打赏
非常感谢你的支持,哥会继续努力!
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (46)

  1. 嗨,作者您好!我用脚本同时签名并且验证时,出现了如下错误,请问如何解决 File "./profile_signer.py", line 205, in main() File "./profile_signer.py", line 129, in main myProfile = readPlist(args.infile) File "./profile_signer.py", line 39, in readPlist raise NSPropertyListSerializationException(errmsg) __main__.NSPropertyListSerializationException: Unexpected character 0 at line 1 in file haha.mobileconfig
    george_luo9年前 (2016-03-07)回复
    • 发下你的profie文件我看看
      天狐9年前 (2016-03-07)回复
    • ./profile_signer.py -n Phone Distribution: Network Technology Co., Ltd (*******) encrypt old.mobileconfig new.mobileconfig 运行-bash: syntax error near unexpected token `(' 是什么原因
      loven9年前 (2016-07-14)回复
      • 明显是哪块敲错了啊。。。
        天狐9年前 (2016-07-14)回复
        • 我就是从git上下载的profile_signer.py啊。你那里有文件么,传我一个251279275@qq.com。谢谢啦
          loven9年前 (2016-07-14)回复
          • 我的意思 你的证书名称不对 Phone Distribution: Network Technology Co., Ltd (*******) 我刚刚执行了下 可以的 /profile_signer.py -n "iPhone Distribution: skyfox technology Co., Ltd." both udid.mobileconfig udidBoth.mobileconfig
            天狐9年前 (2016-07-14)
        • 我sign完成,但是Safari安装的时候显示是无效的描述文件,出现一个未知的错误。但是sign之前的文件是可以正常的安装的。可能的原因是什么呢?
          loven9年前 (2016-07-14)回复
          • 是的 我也是 怎么处理呢?
            xhf8年前 (2016-12-29)
          • 你好 你的问题解决了吗?
            张旭8年前 (2017-02-16)
  2. 请问 InnovCertificates.pem 是从哪里的到的啊?
    Levi9年前 (2016-03-29)回复
    • 1.从钥匙串(keychain)中导出证书 实用工具->钥匙串访问->选择要导出的证书,导出生成p12文件 InnovCertificates.p12 然后转换成 InnovCertificates.pem 文件
      天狐9年前 (2016-03-29)回复
  3. 你好,按照你的方法用苹果证书进行签名,结果是只签名了,但是没有验证!请问是哪一步出错了?谢谢
    JK9年前 (2016-06-28)回复
  4. ./profile_signer.py -n Phone Distribution: Network Technology Co., Ltd (*******) encrypt old.mobileconfig new.mobileconfig 运行-bash: syntax error near unexpected token `(' 是什么原因
    loven9年前 (2016-07-14)回复
  5. 你好,为什么IOS9显示未验证,但是7、8系统都显示已经验证
    loven9年前 (2016-07-16)回复
    • 请问有解决吗,我们也是这样
      baibangtou5年前 (2019-10-12)回复
  6. 脚本签名成功,但是安装描述文件后是无效的描述文件!使用命令行签名也能成功,但是描述文件安装时显示未验证。请问怎么处理啊?
    xhf8年前 (2016-12-29)回复
    • 我这儿也是显示“尚未验证”
      dengchaojie5年前 (2019-07-16)回复
      • 我也是这个问题 你解决了嘛?
        爱慕希5年前 (2019-08-20)回复
        • +1,这个问题有人解决了么?是需要匹配哪个信息么?
          Conner5年前 (2019-09-19)回复
          • 请问一下,你们这个问题解决了吗
            baibangtou5年前 (2019-10-12)
  7. 139735611717448:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY 签名的时候会报这个提示
    妮妮8年前 (2017-05-09)回复
  8. 作者你好,我的mobileconfig文件显示的apple application integration certification authority证书过期,需要重新签名吗?还是要怎样修改。
    7年前 (2017-09-04)回复
  9. 作者您好:我使用脚本 sign完成,但是Safari安装的时候显示是无效的描述文件,出现一个未知的错误。但是sign之前的文件是可以正常的安装的。可能的原因是什么呢?
    星夜虫7年前 (2018-06-04)回复
    • 估计哪里写错了吧
      jayxiang6年前 (2018-09-12)回复
  10. 楼主,我想问下签名完的mobileconfig文件用xcode打开里面乱码,是怎么回事啊?
    coder_di6年前 (2018-11-26)回复
    • 签完名就不能编辑了
      天狐6年前 (2018-11-26)回复
      • 哦哦,关键是哪怕我不编辑的话,在手机上也装不上了,连爆红未签名的提示都没有,咋回事呀
        coder_di6年前 (2018-11-26)回复
  11. 签名了,未验证。什么情况啊
    ping222s5年前 (2019-07-22)回复
  12. 第一种方式可行!
    dcj5年前 (2019-08-09)回复
    • 请问两个证书文件怎能合并呢,是直接将第一个证书的内容连同 begin到end结束复制后放在第二个证书的begin上面吗
      咸鱼5年前 (2019-11-30)回复
  13. security: failed to encode data: UNKNOWN (-8059(d) 报错这个是为什么原因?
    爱慕希5年前 (2019-08-20)回复
    • 修改一下签名后的文件名,不要重复
      飞飞5年前 (2019-08-22)回复
  14. 还有 我用第三种方法 签名之后 下来的文件 显示未验证,我跟着你的步骤来的,是不是漏了哪一步?
    爱慕希5年前 (2019-08-20)回复
    • 我也遇到了这个问题,请问你解决了吗
      非常菜的小白5年前 (2019-10-22)回复
  15. 能不能发个视频教学?我q2717490784!谢谢大神们了
    谢谢你5年前 (2019-08-25)回复
  16. 我这边安装你的都是弄了,但是安装证书的时候不能自动跳到设置界面
    baibangtou5年前 (2019-10-11)回复
  17. 这个公众号【DX前端框架知识库】里面有IOS H5图标免费一键生成工具下载,windows系统能运行,利用免费的SSL域名证书生成,只要域名不过期,可以一直使用这个证书,亲测有效
    大熊3年前 (2021-07-06)回复
  18. 作者您好,第一次获取到了UDID,那么前端在不使用缓存的方式存储这个UDID的前提下(缓存会有安全问题),怎么在第二次不再次安装的方式获取到UDID呢? 详细情况如下: 1.第一次安装配置文件获取到了UDID,存到后台。 2.第二次进入这个界面如何去取这个配置文件内的UDID,而不是再次安装得到UDID (前提不能把获取到的UDID存到前端,否则会有安全隐患)
    PLB3年前 (2021-08-02)回复
  19. 作者你好,请问一下,第一次获取到了UDID以后,那么第二次以及往后怎么获取,总不能每次都安装一遍配置文件吧?这个问题困扰很久了,希望能得到大师的提点
    PLB3年前 (2021-08-02)回复