简介
配置描述文件是一个用于安装到设备的XML格式的文件,包含了相关的配置信息。
比如:
- 设备安全性策略和访问限制
- VPN 配置信息
- Wi-Fi 设置
- 密码策略设置
- 移动设备管理
- 邮件和日历帐户等
制作一个配置文件可以iPhone配置使用工具
和手写XML文件
两种方式。为了方便操作我用了前者(网上说这个已被苹果抛弃,好像不影响文件生成)。
用iPhone配置使用工具生成配置文件
打开文件——新建配置文件,主要涉及使用到的配置如下:
- 通用:设置配置文件的基本信息,其中
标示符
和APP ID类似,安全性
表示是否可移除该描述文件默认总是
允许删除、可选择永不:表示禁止删除,使用授权:表示需要密码验证
。
- 限制:设置设备访问权限,比如是否允许安装应用、是否允许相机、iCloud等,按默认设置即可。
凭证:用于和MDM Server 认证的一个p12格式的证书文件(注意:这个p12 和苹果开发者中心的证书没有关系、真的没有关系,他们只是P12格式而已。这个是有Server提供的用于HTTPS通信相关的用于之间认证的一个文件(Server 生成的CA证书的秘钥文件),是https通信所需要的)。
移动设备管理:这一步配置尤为关键,设置如下。
- 服务器URL:设备注册后以后每次连接的URL地址。
- 登记URL:首次设备注册的地址,包括认证和更新token操作。
- 主题:在上一篇证书制作中提到的 用户ID : com.apple.mgmt.External.*。
- 身份:在凭证中添加的证书。
- 移除时检查:当为TRUE,当用户删除设备上的配置文件时设备会向登记URL发送个消息表示配置文件要删除了,MDM Serve可以依此来检测设备是否还在监控中。
- 访问权限:按默认即可。
- Apple 推送通知服务:选中表示使用的开发环境APNs,这里不要选中。
至此配置设置基本完成,保存、导出会提示给配置文件签名,选择无即可。
生成的完整的XML文件
PayloadContent
PayloadDescription
配置访问限制
PayloadDisplayName
访问限制
PayloadIdentifier
com.apple.applicationaccess.C6130962-2621-47FD-8E9C-8832BCE3C5B0
PayloadType
com.apple.applicationaccess
PayloadUUID
C6130962-2621-47FD-8E9C-8832BCE3C5B0
PayloadVersion
1
allowActivityContinuation
allowAddingGameCenterFriends
allowAppCellularDataModification
allowAppInstallation
allowAppRemoval
allowAssistant
allowAssistantWhileLocked
allowAutoCorrection
allowAutomaticAppDownloads
allowBluetoothModification
allowBookstore
allowBookstoreErotica
allowCamera
allowChat
allowCloudBackup
allowCloudDocumentSync
allowCloudPhotoLibrary
allowDefinitionLookup
allowDeviceNameModification
allowEnablingRestrictions
allowEnterpriseAppTrust
allowEnterpriseBookBackup
allowEnterpriseBookMetadataSync
allowEraseContentAndSettings
allowExplicitContent
allowFingerprintForUnlock
allowFingerprintModification
allowGameCenter
allowGlobalBackgroundFetchWhenRoaming
allowInAppPurchases
allowKeyboardShortcuts
allowManagedAppsCloudSync
allowMultiplayerGaming
allowMusicService
allowNews
allowNotificationsModification
allowOpenFromManagedToUnmanaged
allowOpenFromUnmanagedToManaged
allowPairedWatch
allowPassbookWhileLocked
allowPasscodeModification
allowPhotoStream
allowPredictiveKeyboard
allowRadioService
allowRemoteScreenObservation
allowSafari
allowScreenShot
allowSharedStream
allowSpellCheck
allowSpotlightInternetResults
allowUIAppInstallation
allowUIConfigurationProfileInstallation
allowUntrustedTLSPrompt
allowVideoConferencing
allowVoiceDialing
allowWallpaperModification
allowiTunes
forceAirDropUnmanaged
forceAssistantProfanityFilter
forceEncryptedBackup
forceITunesStorePasswordEntry
forceWatchWristDetection
ratingApps
1000
ratingMovies
1000
ratingRegion
us
ratingTVShows
1000
safariAcceptCookies
2
safariAllowAutoFill
safariAllowJavaScript
safariAllowPopups
safariForceFraudWarning
PayloadDescription
配置密码设置
PayloadDisplayName
密码
PayloadIdentifier
com.apple.mobiledevice.passwordpolicy.B52AEECB-63DD-4B05-AFB2-6B547038F8D7
PayloadType
com.apple.mobiledevice.passwordpolicy
PayloadUUID
B52AEECB-63DD-4B05-AFB2-6B547038F8D7
PayloadVersion
1
allowSimple
forcePIN
requireAlphanumeric
Password
123456
PayloadCertificateFileName
out.p12
PayloadContent
//证书内容base64编码的字符串
PayloadDescription
提供设备鉴定(证书或身份)。
PayloadDisplayName
out.p12
PayloadIdentifier
com.apple.security.pkcs12.ACACFDA4-64B4-46D5-A8BD-DB241775A394
PayloadOrganization
Gener-Tech
PayloadType
com.apple.security.pkcs12
PayloadUUID
ACACFDA4-64B4-46D5-A8BD-DB241775A394
PayloadVersion
1
AccessRights
8191
CheckInURL
https://www..../checkin.do?deviceId=fc97f6b4524346a18f14d1a425986abb
CheckOutWhenRemoved
IdentityCertificateUUID
ACACFDA4-64B4-46D5-A8BD-DB241775A394
PayloadDescription
配置“移动设备管理”
PayloadDisplayName
移动设备管理
PayloadIdentifier
com.apple.mdm.02D2C93A-3F6D-4E54-B15D-EECC1B7BD583
PayloadOrganization
Gener-Tech
PayloadType
com.apple.mdm
PayloadUUID
02D2C93A-3F6D-4E54-B15D-EECC1B7BD583
PayloadVersion
1
ServerURL
https://www..../mdm/server.do?deviceId=fc97f6b4524346a18f14d1a425986abb
SignMessage
Topic
com.apple.mgmt.External.*
UseDevelopmentAPNS
PayloadDescription
Lock&Reset All Settings&Erase
PayloadDisplayName
Gener MDM Sever
PayloadIdentifier
net.myfleet.mdm
PayloadOrganization
Gener-Tech
PayloadRemovalDisallowed
PayloadType
Configuration
PayloadUUID
984CE2FF-6BE1-49AE-A3EF-43B0B0EC9A11
PayloadVersion
1
我们可以直接修改此XML文件,据此Configuration Profile Reference 可添加其他所需的字段。你也可以在此基础上修改适合为自己的(估计很容易遗漏或出错),我还是喜欢在iPhone配置使用工具
中操作比较方便。
给生成的配置文件签名
以上生成的配置文件其实可以直接安装到设备上,如果安装成功后会有一个红色的提示‘未签名’如下。
签名要经历两个操作,一、MDM Sever端签名。二、用苹果颁发的证书签名。
MDM Sever签名
需要以下证书文件:
- unsigned.mobileconfig 原始的未签过名的配置文件
- server.crt 服务器端用于签名的证书
- server.key 服务器端用于签名的证书的秘钥
- cert-chain.crt 其他机构为服务器颁发的CA证书
- signed.mobileconfig will be your signed configuration profile
可以再终端中执行:openssl smime -sign -in unsigned.mobileconfig -out signed.mobileconfig -signer server.crt -inkey server.key -certfile cert-chain.crt -outform der -nodetach
(以上是Java后台签名的操作过程,我没有验证,在此作为一个操作步骤总结放在这里)。
我猜测MDM Sever的签名只是为了和客户端进行下认证和对描述文件的加密过程,只是让这两个之间相互认知对方,和iOS系统是否承认无关。所以以上操作之后还会提示‘未签名’。(实际测试中这个操作可以省略)。
苹果证书相关的签名
以下操作引自网络
这个操作有几种方法可供选择,这里我使用了脚本签名。
借助于强大的github,找到了一个python脚本进行签名
1.签名一个mobileconfig
profile_signer.py与 mobileconfig 放在同一目录,终端进入目录执行
./profile_signer.py -n "3rd Party Mac Developer Application" sign AcrobatPro.mobileconfig AcrobatProSigned.mobileconfig
2.加密一个mobileconfig
./profile_signer.py -n "3rd Party Mac Developer Application" encrypt AcrobatPro.mobileconfig AcrobatProEnc.mobileconfig
3.签名并且加密一个mobileconfig
./profile_signer.py -n "3rd Party Mac Developer Application" both AcrobatPro.mobileconfig AcrobatProBoth.mobileconfig
"3rd Party Mac Developer Application"为你的证书在钥匙串中的全名,选择证书=>显示简介=>复制常用名称加上引号即可,比如
"iPhone Developer: jakey.shao [email protected]"
"iPhone Distribution: Skyfox Network Technology Co., Ltd."
66911171-EE9C-4DB7-BFCE-6564CC1B4E1A如果能正确读取到证书,会提示允许访问钥匙串,点击允许即可!
最终安装提示已验证啦。