- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试为 iOS 设备签署和加密 .mobileconfig
配置文件。
使用 ruby 中的 openssl::pkcs7
签名功能可以完美地签名,
但是使用加密功能,我得到了加密数据,但 Safari 无法安装配置文件,提示 “无效配置文件”。
这方面有两个问题:
.mobileconfig 配置文件中的哪些数据实际上是加密的进入 (key) 的 (data)..(/data) 部分加密有效负载内容(/ key )?
数据是二进制格式(.der
)还是base64编码?
在这方面的任何帮助都会有所帮助,因为 APPLE 严重缺乏任何加密配置文件的文档。
最佳答案
此问题与 another question 相同.在此处重新发布答案,并进行一些修改!
我用过OpenSSL Ruby 和 Plist 中可用的模块 gem 。
考虑密码限制配置文件。
passcode_payload ={
'PayloadUUID' => 'RANDOM_STRING_UUID',
'PayloadOrganization' => 'PayloadOrganization',
'PayloadVersion' => 1,
'PayloadIdentifier' => 'com.test.PayloadIdentifier',
'PayloadType' => 'Configuration',
'PayloadDisplayName' => 'PayloadDisplayName',
'PayloadRemovalDisallowed' => false
}
passcode_payload_content = {
'PayloadDescription' => 'PayloadDescription',
'PayloadDisplayName' => 'PayloadDisplayName',
'PayloadIdentifier' => 'PayloadIdentifier',
'PayloadOrganization' => 'PayloadOrganization',
'PayloadType' => 'com.apple.mobiledevice.passwordpolicy',
'PayloadUUID' => "RANDOM_STRING_UUID",
'PayloadVersion' => 1,
'allowSimple' => true,
'forcePIN' => true
'maxPINAgeInDays' => 20,
'minComplexChars' => 1,
'minLength' => 4,
'requireAlphanumeric' => true
}
通常对于普通配置文件,passcode_payload_content
作为字典数组进入 passcode_payload['PayloadContent']
。
passcode_payload['PayloadContent'] = [passcode_payload_content]
但对于加密的配置文件,PayloadContent
应该被删除,EncryptedPayloadContent
应该根据 configuration profile key reference document 使用.
问题 1: .mobileconfig 配置文件中的哪些数据实际上是加密的,这些数据进入( key )EncryptedPayloadContent (/key) 的 (data)..(/data) 部分
来自文档,
To encrypt a profile do the following:
Remove the PayloadContent
array and serialize it as a proper plist.Note that the top-level object in this plist is an array, not a dictionary. CMS-encrypt the serialized plist as enveloped data. Serialize the encrypted data in DER format. Set the serialized data as the value of as a Data plist item in the profile, using the key EncryptedPayloadContent
因为plist中的顶级对象应该是一个数组
passcode_payload_content_array = [passcode_payload_content]
序列化到正确的 plist
to_be_encrypted_plist = passcode_payload_content_array.to_plist
加密证书负载内容,
device_certificate = OpenSSL::X509::Certificate.new File.read('deviceIdentityCertificate.pem')
encrypted_payload = OpenSSL::PKCS7.encrypt([device_certificate],to_be_encrypted_plist, OpenSSL::Cipher::Cipher::new("des-ede3-cbc"),OpenSSL::PKCS7::BINARY)
问题 2:数据是二进制格式 (.der) 还是 base64 编码?
将加密的payload内容添加到der格式的原始payload中
passcode_payload['EncryptedPayloadContent'] = StringIO.new(encrypted_payload.to_der)
关于ios - 如何加密 iOS 中的移动配置文件(在 OTA 部署中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11307852/
我必须处理一个带有 OTA(开放旅行联盟)消息的项目。这些 xml 消息有巨大的 xsd ,我正在尝试找到一种方法以对象关系方式在数据库模式中类似于它们,最有可能是 PostgreSQL 或 MySQ
我尝试使用以下链接为我的示例应用程序创建 OTA: http://developer.apple.com/library/ios/#featuredarticles/FA_Wireless_Enter
我已经设置了一个 MDM 服务器,可以通过无线方式将应用程序推送给用户。但我面临的严重问题是入学人数只有50%左右。一旦用户将他们的设备连接到公司 wifi,我喜欢将配置文件推送到移动设备中。现在我将
我正在开发一个应用程序,我有用户为我测试该应用程序,有时我需要修复错误并将我的应用程序重新上传到我的网站,并让我的 Beta 测试人员下载到最新版本。我的问题是我的应用是否有办法检查网站上是否有新版本
我正在开发一个可以从网站(可能还有市场)获得的应用程序。我现在遇到的问题是如何处理应用程序的更新。我知道如何对照当前版本检查版本,我知道是否需要更新它。问题是……怎么做? 有什么方法可以让我从网站下载
这是一个有点奇怪的问题。今天我为 OTA 分发构建了新版本的 iOS 应用程序。下载后突然提示“无法下载应用程序,此时无法下载‘ABC’”。但奇怪的是,如果我使用 xCode“Devices”工具安装
我已经为我的组织设置了 OTA,但似乎无法正常运行。这是我所做的: 在托管服务器上设置外部认可的 SSL 证书 确保服务器上有以下 MIME 类型: ipa application/octet-str
我想访问事件文件 (.pas) 上的错误。现在,我可以在 IDE 的左侧找到它,正如您在图像中看到的那样。 我在OTA上发现了接口(interface)IOTAModuleErrors,这似乎就是我想
对于 BlackBerry OTA 安装,jad 和 cod 文件应该使用什么内容类型? 最佳答案 来自 http://www.oracle.com/technetwork/systems/index
我正在尝试通过让 ESP32 向 Azure Blob 存储上的文件发出获取请求来 OTA 更新。 出于某种未知的原因,它不允许我使用 WifiClient.connect() 函数,因为它总是返回
我正在研究 Java Card (SIM),并且正在使用 OTA 技术。有些表达方式我还没有一个很好的定义。 例如,当我在 SIM(用户身份模块)上加载小程序时,我使用 BIP 或 SMS。我知道短信
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
我在 QC 中有以下结构 Test Plan > Subject > Sample(Folder Name) > Scenario (Sub Folder) > TC1 (Test Case ) 如何
我创建了一个临时分发的 ipa 文件和一个 plist 文件,并将其上传到网站上。然后我导航到网站并单击下载链接。它弹出说: www.mywebsite.co.uk would like to ins
我开发了一个 OTA 应用程序,我可以通过 Adhoc 无线下载到我的 iPhone 和 iPad 设备(版本 3gs)。但是当我尝试下载到我的设备(4s)以外的其他设备时,它显示“此时无法下载该应用
我正在为 iPad 开发许多应用程序。我们有很多测试人员进行开发,但我想只允许某些测试人员访问某些应用程序。我的网站上隐藏着一个开发版本,测试人员可以通过他们的 iPad 访问。我想知道的是,设置我的
基本上,我试图在我的应用程序中放置一个按钮,如果用户运行的 iOS 版本存在已知问题,它会警告用户。按下时,它会将它们引导至 OTA 更新部分设置。这可能吗? 我有代码检测用户是否使用旧的 iOS 版
我有自己的应用程序商店,其中托管了所有 Android 应用程序。修改了一些应用程序。那么我如何使用 OTA 向客户/用户发送更新。因此,客户将了解新的更新,他将能够下载它。 最佳答案 在 HN 上找
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
多年来,我一直在使用临时分发版的“OTA”分发版进行 Beta 测试。它总是有效的。上一个版本是在五月。效果很好。 一般的想法是.ipa 和.plist 在我们的服务器上。我有一个带有 itms-se
我是一名优秀的程序员,十分优秀!