在iOS开发中,embedded.mobileprovision描述文件是开发人员非常熟悉的,里面包含了证书信息,如调试设备UDID、Entitlements、AppIDName、DeveloperCertificates等大量关于此安装包和证书的信息,此文件是二进制格式,无法直接打开,只能通过终端命令,例如mac下自动的命令行工具:security来查看信息,笔者这里演示下如何在获取一个IPA安装包或embedded.mobileprovision的情况下得知描述文件或证书的到期时间。

查看embedded.mobileprovision文件信息,首先打开终端Terminal,输入如下命令:

security cms -D -i embedded.mobileprovision

说明:如果是IPA安装包,请先解压获取此描述文件,全部文本结果如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><key>AppIDName</key><string>XXXXX</string><key>ApplicationIdentifierPrefix</key><array><string>V5L5V5L5NXXXXXXX</string></array><key>CreationDate</key><date>2020-11-26T06:38:02Z</date><key>Platform</key><array><string>iOS</string></array><key>IsXcodeManaged</key><false/><key>DeveloperCertificates</key><array><data>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</data></array><key>Entitlements</key><dict><key>beta-reports-active</key><true/><key>application-identifier</key><string>V5L5NXXXXXXX.com.XXXXXXX</string><key>keychain-access-groups</key><array><string>V5L5NXXXXXXX.*</string><string>com.apple.token</string></array><key>get-task-allow</key><false/><key>com.apple.developer.team-identifier</key><string>V5L5V5L5NXXXXXXX</string></dict><key>ExpirationDate</key><date>2021-10-26T02:31:28Z</date><key>Name</key><string>XXXXX</string><key>TeamIdentifier</key><array><string>XXXXXXX</string></array><key>TeamName</key><string>XXXXX Busines Co., Ltd.</string><key>TimeToLive</key><integer>333</integer><key>UUID</key><string>a1c12dbb-d919-49c8-9742-cXXXXXXX2ab1</string><key>Version</key><integer>1</integer>
</dict>
</plist>%            

从以上文件就可以得知此描述文件到期时间:2021-10-26T02:31:28Z

<key>ExpirationDate</key><date>2021-10-26T02:31:28Z</date>

但在此命令下无法得知证书的到期时间,DeveloperCertificates 字段对应的值为Base64加密,无法正常解析出来,一般个人或公司为一年,企业为三年,描述文件都是一年有效期。

至此,我们用到如下命令来查看证书到期时间,输入如下命令:

security cms -D -i embedded.mobileprovision > tmp.plist && /usr/libexec/PlistBuddy -c 'Print DeveloperCertificates:0' tmp.plist | openssl x509 -inform DER -noout -enddate

notAfter=Oct 26 02:31:28 2021 GMT

可见证书文件到期时间为:Oct 26 02:31:28 2021 GMT,与描述文件到期时间一致,说明是个人或公司类型,如果是2023年到期说明是企业类型,同时也生成了一个temp.plist的临时文件,如果不需要此文件,可以执行如下命令:

/usr/libexec/PlistBuddy -c 'Print DeveloperCertificates:0' /dev/stdin <<< $(security cms -D -i embedded.mobileprovision) | openssl x509 -inform DER -noout -enddate

也能看到同样的到期时间,如果想看全部信息,把后面的-enddate换成-text,可以执行如下命令:

 /usr/libexec/PlistBuddy -c 'Print DeveloperCertificates:0' /dev/stdin <<< $(security cms -D -i embedded.mobileprovision) | openssl x509 -inform DER -noout -text 

在命令行下查看首先要解压IPA包文件,拿到embedded.mobileprovision,然后执行相应的命令来查看,如果不想如此复杂,可以利用UI工具来查看,利用这款mac软件:风车签名管理 - 工具箱 - 查看描述文件,直接拖拽即可快速查看,如下图:

另外,如果想快速预览一个IPA包文件或描述文件,也可以采用mac插件的方式,首先安装QuickLook插件ProvisionQL,地址:https://github.com/ealeksandrov/ProvisionQL,安装方式如下:

Manual

  • download archive with latest version from the Releases page;
  • move ProvisionQL.qlgenerator to ~/Library/QuickLook/(current user) or /Library/QuickLook/(all users);
  • run qlmanage -r to refresh Quick Look plugins list.

之后选中文件右键鼠标(这里如果不起作用,建议重启电脑一次):

即可看到如下文件信息:

至此,如果想查看embedded.mobileprovision文件的相关信息,比如到期时间等,就可以利用以下这三种方案:

1、Terminal命令行工具 - security;

2、UI工具 - 风车签名管理 - 工具箱 - 查看描述文件;

3、QuickLook插件 - ProvisionQL(https://github.com/ealeksandrov/ProvisionQL)预览。

基于embedded.mobileprovision描述文件查看iOS苹果证书到期时间三种方案相关推荐

  1. 查看域名https证书到期时间

    1.通过域名获取 方法一 echo | openssl s_client -servername 域名 -connect 域名:443 2>/dev/null | openssl x509 -n ...

  2. 测试版ios15怎么信任软件,苹果ios15信任的描述文件在哪?苹果ios15授权信任怎么设置?...

    苹果ios15信任的描述文件在哪?ios15系统发布了,虽说只是一个测试的版本,但是就目前小伙伴们的升级体验来说的话,ios15目前建议还是等一下正式版本,测试版还是与不少bug的,很多朋友不清楚io ...

  3. 查看IOS-app证书到期时间

    参照: iOS企业版证书到期 https://www.jianshu.com/p/44b0dc46ef37 如果不能十分确定每一个打出来的ipa的有效期(过期时间),而又需要关注它具体什么时候需要强制 ...

  4. 【查看linux中所有用户的三种方式】

    查看linux中所有用户的三种方式学习目标: 提示:通过使用 /etc/passwd 文件,getent 命令,compgen 命令这三种方法查看系统中用户的信息 用户信息存放位置: 提示:Linux ...

  5. ios多线程开发的常用三种方式

    ios多线程开发的常用三种方式 1.NSThread 2.NSOperationQueue 3.GCD NSThread: 创建方式主要有两种: [NSThread detachNewThreadSe ...

  6. 【Win 10 应用开发】文件读写的三种方案

    本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧--事无定法,灵活运用者为上. OK,咱们开始吧 ...

  7. iOS 组件化的三种方案

    组件化 本文主要介绍iOS组件化的三种方案 1.常⽤的三种方案 URL Scheme Target - Action Protocol - Class 匹配 1.1. URL Scheme路由 使 U ...

  8. 文件夹选择对话框 JS实现的两种方案

    文件夹选择对话框 JS实现的两种方案 /**  * browseFolder.js  * 该文件定义了BrowseFolder()函数,它将提供一个文件夹选择对话框  * 以供用户实现对系统文件夹选择 ...

  9. java证书过期时间_我想用代码方式查看ca证书到期时间,以下是我的代码,可以显示日期,但是和实际的截止日期不一致...

    我想用代码方式查看ca证书到期时间,以下是我的代码,可以显示日期,但是和实际的截止日期不一致 希望各位大牛帮忙看一下问题出在哪,多谢啦 import java.io.*; import java.se ...

最新文章

  1. 如何在树莓派上进行python编程_《树莓派Python编程指南》怎么样_目录_pdf在线阅读 - 课课家教育...
  2. 一文看懂微服务背后的技术演进与应用实践
  3. Redis数据结构详解之Set(三)
  4. 排序算法-04快速排序(Python实现)
  5. psql切换schema_PostgreSQL教程(二):模式Schema详解
  6. OpenvSwitch实现kubernetes依赖的底层网络
  7. timm 视觉库中的 create_model 函数详解
  8. 中国网建java发送短信_短信验证登陆-中国网建提供的SMS短信平台
  9. 使用winscp在从linux向windows传输文件
  10. 【Druid】Druid简介
  11. centos7开放80端口_Centos7.4系统 httpd模式搭建文件服务器
  12. iOS-入门HelloWorld
  13. Android中用URL模拟一个简单的图片加载器
  14. 如何显示或隐藏Mac电脑右上角的声音图标
  15. IDEA---Project下看不见项目目录
  16. oracle10G/oracle11G连接oracle12c,ORA-28040的解决
  17. 怎样把小米手机便签内容转存到百度网盘中去?
  18. MacBook Pro 触摸板手势突然失效的解决方案
  19. 经典题目3-应用的闪退通常是什么原因造成的?如果应用闪退,Android 和 iOS 上是分别怎么抓取日志的?
  20. 为原型产品推荐的四款设计工具

热门文章

  1. 4x4按键c语言,52单片机C语言4X4键盘.docx
  2. 【Quant】BigQuant学习笔记(1) 可视化策略
  3. 【雷达与对抗】【2018.05】用于调制信号分类的深度神经网络结构
  4. 观察者模式ApplicationListener异步处理事件
  5. 数据分析项目-某加油站订单分析(SQL需求篇)
  6. 证明spring中property name=这个双引号的内容只与setter方法有关,与一个类定义的字段和getter方法无关...
  7. 浏览器加载解析渲染机制的全面解析
  8. js实现两张图片来回切换
  9. 面试官100%会问的软件测试面试题!!(必看)
  10. Java中特殊字符处理(转义字符)