iOS Dev (25) 解决“The executable was signed with invalid entitlements.”问题

本文提供了解决iOS项目中遇到的'The executable was assigned with invalid entitlements.'问题的方法,通过将Code Signing Entitlements设置为空来解决权限不匹配的问题。

iOS Dev (25) 解决“The executable was signed with invalid entitlements.”问题

问题描述

我们从网上下载一些现成的 Project 时,有时会遇到这个问题:

The executable was signed with invalid entitlements.

详细的提示信息为:

The entitlements specified in your application’s Code 
Signing Entitlements file do not match those 
specified in your provisioning profile.

(0xE8008016).

解决方案

Project - TARGETS - 项目目标名称 - Build Settings - Code Signing Entitlements 将其值置为空。

再 Run It !

-

转载请注明来自:http://blog.youkuaiyun.com/prevention

<think>好的,我现在需要帮助用户在Mac系统中查找软件进程的数字签名验证方法。首先,我得回顾一下用户的问题和相关引用,确保自己理解正确。用户想了解如何查找正在运行的进程的数字签名并进行验证。 首先,我记得MacOS中有一些命令行工具可以用来处理签名相关的任务。比如`codesign`,这个工具专门用于检查代码签名。用户可能需要使用这个工具来验证特定进程的签名。另外,用户提到的引用中提到了使用`security`命令解锁keychain,以及`xcodebuild`进行签名,不过这可能更多涉及应用签名而不是验证已运行的进程。 接下来,我需要考虑如何定位到具体的进程。通常,可以使用`ps`或者`pgrep`命令来查找进程的PID。一旦有了PID,就能获取到该进程的可执行文件路径,然后用`codesign`进行检查。引用[1]中提到查找证书指纹的方法,可能和`codesign`的输出有关,因为它会显示签名信息,包括SHA-1哈希。 然后,验证签名是否有效是关键步骤。`codesign`的`--verify`选项可以用来验证签名的完整性。如果签名无效或被修改,命令会报错。此外,可能需要检查Entitlements,特别是引用[2]和[3]提到的权限问题,比如`com.apple.webinspector.allow`,这可能影响应用的功能。使用`codesign -d --entitlements -`可以导出这些信息。 另外,用户可能需要了解如何查找所有已签名的进程。可以用`ps`列出所有进程,然后结合`xargs`和`codesign`批量检查。引用[4]提到Gatekeeper和TCC数据库,这可能涉及到系统安全策略,但直接验证签名可能不需要这些,除非遇到权限问题。 还需要注意权限问题,比如在解锁keychain时可能需要密码,如引用[3]中的脚本所示,但验证签名可能不需要解锁,除非签名证书在锁定的keychain里。不过通常系统工具不需要用户解锁就能验证。 总结步骤应该是:1. 查找进程PID;2. 获取可执行路径;3. 使用`codesign`检查签名信息;4. 验证签名有效性;5. 可选地检查Entitlements。同时,提醒用户注意权限和系统安全设置可能影响结果,比如未签名的应用或签名损坏的情况。 最后,生成相关问题,可能涉及其他工具如`openssl`验证证书,或者处理签名错误的情况,以及系统安全策略的影响。确保回答结构清晰,分步骤说明,并引用相关知识点。</think>### 分步解答:MacOS验证进程数字签名的方法 #### 1. 定位目标进程 使用`pgrep`或`ps`命令查找进程的PID(进程ID)和可执行文件路径: ```bash # 通过进程名查找PID(例如查找Safari) pgrep -l Safari # 输出示例:1234 Safari # 通过PID获取可执行文件路径 ps -p <PID> -o comm= # 示例:/Applications/Safari.app/Contents/MacOS/Safari ``` #### 2. 使用codesign检查签名 通过`codesign`命令查看签名详细信息: ```bash codesign -dvvv <可执行文件路径> ``` 示例输出关键字段: ``` Authority=Software Signing Authority=Apple Code Signing Certification Authority Authority=Apple Root CA Identifier=com.apple.Safari Format=app bundle with Mach-O thin (x86_64) CodeDirectory v=20500 size=123456 flags=0x0(...) Hash type=sha256 size=32 CandidateCDHash sha256=abcd1234... CDHash=abcd1234... Signature size=1234 Signed Time=2023年1月1日 上午10:00 ``` #### 3. 验证签名有效性 ```bash codesign --verify -vvvv <可执行文件路径> # 有效输出:<路径>: valid on disk # 无效输出:<路径>: invalid signature ``` #### 4. 检查Entitlements(权限声明) ```bash codesign -d --entitlements - <可执行文件路径> ``` 示例输出: ``` <?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>com.apple.security.app-sandbox</key> <true/> </dict> </plist> ``` #### 5. 批量验证所有进程(管理员权限) ```bash sudo ps -A -o pid,comm | awk 'NR>1 {print $2}' | xargs -n1 codesign -dvv 2>&1 | grep -E 'Executable|Authority|invalid' ``` ### 关键原理说明 1. **签名层级结构**:MacOS采用多层证书链验证,从开发者证书($Authority=Software Signing$)到苹果根证书($Apple Root CA$),形成信任链[^1] 2. **哈希校验**:通过$CDHash$字段验证可执行文件完整性,任何修改都会导致哈希值变化 3. **沙盒权限**:Entitlements决定进程的权限边界,如网络访问、硬件调用等[^2] ### 常见问题处理 - **"invalid signature"错误**:可能文件被篡改或签名损坏,需重新安装应用 - **无签名信息**:使用`codesign -dv <路径>`确认是否未签名,未签名进程会被Gatekeeper阻止[^4] - **权限不足**:通过`security unlock-keychain`解锁登录钥匙串[^3]
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值