iOS MDM详解(3)— 生成mobileconfig配置文件及签名

简介

配置描述文件是一个用于安装到设备的XML格式的文件,包含了相关的配置信息。

比如:

  • 设备安全性策略和访问限制
  • VPN 配置信息
  • Wi-Fi 设置
  • 密码策略设置
  • 移动设备管理
  • 邮件和日历帐户等

制作一个配置文件可以iPhone配置使用工具手写XML文件两种方式。为了方便操作我用了前者(网上说这个已被苹果抛弃,好像不影响文件生成)。

用iPhone配置使用工具生成配置文件

打开文件——新建配置文件,主要涉及使用到的配置如下:

Snip20170502_3.png
  • 通用:设置配置文件的基本信息,其中标示符和APP ID类似,安全性表示是否可移除该描述文件默认总是允许删除、可选择永不:表示禁止删除,使用授权:表示需要密码验证
  • 限制:设置设备访问权限,比如是否允许安装应用、是否允许相机、iCloud等,按默认设置即可。
  • 凭证:用于和MDM Server 认证的一个p12格式的证书文件(注意:这个p12 和苹果开发者中心的证书没有关系、真的没有关系,他们只是P12格式而已。这个是有Server提供的用于HTTPS通信相关的用于之间认证的一个文件(Server 生成的CA证书的秘钥文件),是https通信所需要的)。

  • 移动设备管理:这一步配置尤为关键,设置如下。

Snip20170502_4.png
  • 服务器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配置使用工具中操作比较方便。

给生成的配置文件签名

以上生成的配置文件其实可以直接安装到设备上,如果安装成功后会有一个红色的提示‘未签名’如下。

Snip20170508_1.png

签名要经历两个操作,一、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如果能正确读取到证书,会提示允许访问钥匙串,点击允许即可!

最终安装提示已验证啦。


Snip20170508_2.png

至此得到mobileconfig配置文件,交由MDM Sever供设备下载。

你可能感兴趣的:(iOS MDM详解(3)— 生成mobileconfig配置文件及签名)