Шифрование профиля конфигурации iPhone

У меня есть профиль конфигурации с полезной нагрузкой MDM и Wi-Fi. У меня есть несколько вопросов в моей голове

  1. В чем разница между идентификационной полезной нагрузкой и паролем удаления профиля. Я знаю, что второй запрос, если пользователь хочет удалить профиль.
  2. Смогу ли я иметь пароль для удаления профиля из моего профиля с полезной нагрузкой MDM?
  3. Как зашифровать мой файл.mobileconfig? Должен ли я использовать сертификат CA для шифрования профиля?

2 ответа

Решение

1) Я думаю, что вы говорите о профиле личности (против профиля идентификации).

Этот профиль предназначен для присвоения устройству какой-либо идентификации (сертификат и закрытые ключи), которые оно будет использовать для аутентификации на сервере.

Это может быть PKCS12 (это формат, который объединяет как сертификат, так и ключ) или SCEP (который является протоколом для получения сертификата)

2) Профиль MDM всегда съемный (кроме случая, когда устройство контролируется).

3) Именно там используется идентификационная информация. Вы должны зашифровать профиль, используя сертификат этого устройства. Таким образом, если вам нужно зашифровать профиль и отправить на 5 различных устройств, вам фактически понадобятся идеты (сертификаты) для каждого из этих 5 устройств, и вам нужно будет создать 5 копий этого профиля и зашифровать с использованием каждого сертификата.

      I can only answer your third question, how to encrypt mobileconfig file? For this I wrote a utility class


```
    /**
     * encryption moblicconfig file 
     * @param configPath moblic filepath ./data/123.mobileconfig
     * @param outPath encrypted moblic filepath ./data/123.mobileconfig
     * @param certPath certpath  ./data/cert.pem
     * @throws IOException
     * @throws ParserConfigurationException
     * @throws ParseException
     * @throws SAXException
     * @throws PropertyListFormatException
     */
    public static void encryptionMobile(String configPath,String outPath,String certPath) throws IOException, ParserConfigurationException, ParseException, SAXException, PropertyListFormatException {

        NSDictionary rootDict = (NSDictionary) PropertyListParser.parse(FileUtil.readBytes(new File(configPath)));
        String payloadContent = rootDict.get("PayloadContent").toXMLPropertyList();
        File tempPlistPath =  new File("./data/web/temp/" + System.currentTimeMillis());
        FileUtil.writeBytes(payloadContent.getBytes(StandardCharsets.UTF_8),tempPlistPath);

        File tempDer = new File("./data/web/temp/" + System.currentTimeMillis());

        String outDer = tempDer.getAbsolutePath();

        String certPathFile = new File(certPath).getAbsolutePath();

        String cmd = "openssl smime -encrypt -aes128 -nodetach -binary -outform der -in " + tempPlistPath.getAbsolutePath() + " -out " + outDer + " " + certPathFile;
        XjmUtil.runtimeExec(cmd);

        byte[] bytes = FileUtil.readBytes(new File(outDer));

        String EncryptedPayloadContent = Base64.getEncoder().encodeToString(bytes);

        rootDict.remove("PayloadContent");

        rootDict.put("EncryptedPayloadContent", new NSData(EncryptedPayloadContent));


        PropertyListParser.saveAsXML(rootDict,new File(outPath));

        FileUtil.del(tempPlistPath);
        FileUtil.del(outDer);


    }
```

This is maven dependency

<dependency>
 <groupId>cn.hutool</groupId>
 <artifactId>hutool-all</artifactId>
 <version>5.7.14</version>
</dependency>

<dependency>
 <groupId>cn.hutool</groupId>
 <artifactId>hutool-all</artifactId>
 <version>5.7.14</version>
</dependency>
Другие вопросы по тегам