iOS MDM 设备轮询和 APNs 证书

Posted

技术标签:

【中文标题】iOS MDM 设备轮询和 APNs 证书【英文标题】:iOS MDM Device Polling and APNs Certificate 【发布时间】:2018-01-06 20:20:59 【问题描述】:

我正在开发一个 ios MDM 服务器作为我的项目,并且我几乎完成了。

我手动创建了所有必要的文件,包括 mobileconfig 文件并安装了配置文件。

设备经常使用空闲消息轮询服务器 URL 中提到的 URL。我读到空闲消息表明设备正在检查服务器以获取命令,我们可以将 plist 响应作为命令发送。

我的问题是,如果所有设备都频繁轮询 MDM 服务器,那么 .pem 文件和 APNs 证书需要什么。我们是否应该像向我们的 iOS 应用程序发送推送通知一样向设备发送推送通知,如下所示。


    "aps": 
         "id": 10,
         "message": "Hello world!",
         "from": "Ram"
    

如果这是我们应该做的,我们应该在有效载荷中发送什么?

编辑:

我找到了发送推送通知的解决方案。

com.notnoop.apns.ApnsService apnsservice = com.notnoop.apns.APNS.newService().withCert(<pushCertStream>,<pushCertPass>).withProductionDestination().build();
apnsservice.push(token, com.notnoop.apns.APNS.newPayload().mdm(pushMagic)).build());

当这样发送推送通知时,设备会以空闲消息响应,我们可以向设备发送命令。

还有几个疑问:

1) 苹果什么时候检查配置文件的 SSL 证书?我确信它会在配置文件安装期间进行检查,因为我的配置文件安装由于错误的 SSL 证书而失败了很多次。发送推送通知时,Apple 是否也会检查 SSL 证书,因为我注意到了一个类 com.notnoop.exceptions.InvalidSSLConfig?是否检查发送推送通知的服务器是否具有配置文件中指定的 SSL 证书?

编辑

当服务器向设备发送推送通知时,设备会以空闲消息响应服务器 URL 中指定的 URL。如果此时 SSL 证书无效,会发生什么情况。它会产生错误吗?

2) 多台服务器能否拥有相同的推送通知证书,以减少单台服务器发送推送通知和向设备发送命令的负载?会不会有冲突?

3) 数量是否有限制。使用单个推送通知证书发送的推送通知?如果不是,它可以处理任意数量的推送通知吗?

4) 配置文件中的签到 URL 和服务器 URL 可以不同吗?

编辑 Check-in URL 和 Server URL 是否可以属于不同的服务器,即

签到网址:https://www.domainone.com/MDM/

服务器网址:https://www.domaintwo.com/MDM/

5) First question in this link(最不重要) 虽然解决方案提到 SSL 证书到期,但没有提到 SSL 证书的更改。

编辑 2

更新推送通知证书时,已安装配置文件的设备如何更新设备配置文件中的证书详细信息?

【问题讨论】:

【参考方案1】:

1) 当 MDM 服务器向设备发送推送通知时,设备通过联系服务器 URL 来响应服务器。服务器的 SSL 证书必须与配置文件中的 SSL 证书有效负载相匹配。如果有任何冲突,就会出现错误。因此,每次设备联系 Serverl URL 时都会检查 SSL 证书。如果有任何冲突,将产生以下错误。

描述:“服务器 URL”的服务器证书无效。

:MCHTTPTransactionErrorDomain

2) 是的,多台服务器可以拥有相同的推送通知证书。每个服务器只需要知道证书的密码。

3) 我认为没有任何限制。发送的推送通知。检查以下链接。

Reference 1

Reference 2

4) 您的服务器 URL 和签入 URL 可以不同,但​​应属于同一主机。

5) 如果 SSL 证书发生更改,则必须删除配置文件并安装新配置文件。

【讨论】:

谢谢。你能检查我的 EDIT 2 吗?【参考方案2】:

1) 嗯,AFAIK,如果您的服务器有 SSL 证书,那么使用该证书签署配置文件只会验证它。在功能方面,我认为它没有任何作用。但是,您还需要一个与您的服务器相关的证书,这是作为有效负载的一部分进入 plist 的证书。它需要与服务器具有的相同。 (通常为 .p12 格式)

2) 是的,您可以拥有多个服务器,因为本质上发送推送通知只是向苹果发出的具有适当凭据的请求。

3) 我认为证书可以发送的推送通知数量没有限制……但更重要的是您发送它们的频率。 (例如用推送通知请求淹没苹果)

4) 是的,我坚信如此,但您应该仔细检查一下

5) 同样,SSL 证书仅使配置文件通过 AFAIK 验证(如果我们严格谈论 mdm)。 (编辑:我忘记了您可以在配置文件中嵌入另一个 .p12 证书。这提供了设备和服务器之间的身份验证,并且需要是相同的 SSL 证书)。

【讨论】:

以上是关于iOS MDM 设备轮询和 APNs 证书的主要内容,如果未能解决你的问题,请参考以下文章

Java iOS MDM:APNs 证书 UID 更改

无法通过 APNS 向设备发送 MDM 推送通知。

多个 MDM 服务器,多个 APNs 证书?

轮询长轮询和websocket

轮询长轮询和websocket

轮询和长轮询优缺点分析