Accès aux ressources de configuration déclaré
L’accès aux ressources de configuration déclarée windows (WinDC) est utilisé pour gérer les configurations des appareils et appliquer des stratégies pour garantir que les appareils restent dans l’état souhaité. Il est essentiel pour maintenir la sécurité, la conformité et l’efficacité opérationnelle dans les organisations. Le service cloud WinDC est utilisé pour envoyer l’état souhaité d’une ressource à l’appareil où celui-ci a la responsabilité d’appliquer et de gérer l’état de configuration des ressources.
Les fournisseurs de services de configuration (CSP) jouent un rôle essentiel dans la configuration de l’accès aux ressources et agissent comme une interface entre l’appareil et le protocole WinDC. Ils fournissent une approche cohérente et standardisée du déploiement et de l’application des configurations. Les csp prennent en charge différents scénarios d’accès aux ressources, notamment :
- FOURNISSEUR DE SERVICES DE CONFIGURATION VPNv2 et FOURNISSEUR DE SERVICES DE CONFIGURATION VPN
- Fournisseur de services de configuration Wi-Fi
- Fournisseur de services de configuration ClientCertificateInstall
- Fournisseur de services de configuration ActiveSync
- Fournisseur de services de configuration WiredNetwork
- Fournisseur de services de configuration RootCACertificates
La pile WinDC sur l’appareil traite les demandes de configuration et maintient l’état souhaité, qui est la clé de la raréa. L’efficacité, la précision et l’application des demandes de configuration sont essentielles pour une RA efficace. L’accès aux ressources s’intègre en toute transparence à WinDC, fournissant une méthode étendue de gestion des appareils via le cloud avec une scalabilité et une efficacité améliorées.
- Efficacité : le traitement par lots réduit l’utilisation des ressources du serveur et réduit la latence.
- Précision : la pile cliente WinDC comprend la surface d’exposition de configuration de l’appareil, ce qui permet une gestion efficace des mises à jour continues. Il garantit l’exécution précise des modifications de configuration communiquées par le service cloud.
- Application des stratégies : appliquez et gérez des stratégies organisationnelles sur les appareils de manière cohérente et à grande échelle, en garantissant la conformité et la configuration uniforme. Cet aspect permet aux organisations de maintenir la posture de sécurité souhaitée sur tous les appareils.
Instructions d’accès aux ressources
Ces instructions fournissent des bonnes pratiques et des exemples permettant aux développeurs et aux testeurs d’implémenter des configurations d’accès aux ressources (RA) de manière sécurisée, efficace et cohérente. Ils visent à améliorer la sécurité réseau et à optimiser l’accès aux ressources pour les utilisateurs finaux tout en respectant les stratégies et les exigences de conformité.
- Intégrité de la configuration : pour prendre en charge l’accès ininterrompu et sécurisé aux ressources, assurez-vous que les configurations sont cohérentes entre les appareils et les utilisateurs.
- Validation de l’état : surveillez l’état des configurations pour vérifier l’application correcte des paramètres d’accès aux ressources.
- Gestion des profils : gérez efficacement les profils utilisateur en ajoutant, mettant à jour et supprimant en fonction des besoins, pour contrôler l’accès aux ressources et maintenir la sécurité.
- Journaliser et auditer : utilisez les journaux et les pistes d’audit pour les opérations et les modifications afin de faciliter la résolution des problèmes et la conformité.
- Détection et correction des dérives : pour maintenir la conformité avec les stratégies RA, surveillez en permanence la dérive (modifications de configuration ou de comportement) et prenez des mesures correctives.
- Sécurité et confidentialité : pour protéger les données et les ressources utilisateur, implémentez des mesures de sécurité et de confidentialité fortes dans les configurations.
En suivant ces instructions et en comprenant la syntaxe du fournisseur de services de configuration DeclaredConfiguration, vous pouvez implémenter et gérer efficacement les configurations RA tout en conservant la sécurité et la conformité.
Document WinDC
La valeur du Document
nœud feuille dans le csp DeclaredConfiguration est un document XML qui décrit la requête. Voici un exemple de document WinDC avec les données de configuration spécifiées pour l’accès aux ressources.
<DeclaredConfiguration context="user" schema="1.0" id="DCA000B5-397D-40A1-AABF-40B25078A7F9" osdefinedscenario="MSFTVPN" checksum="A0">
<CSP name="./Vendor/MSFT/VPNv2">
<URI path="Test_SonicWall/TrafficFilterList/0/Protocol" type="int">2</URI>
<URI path="Test_SonicWall/TrafficFilterList/0/Direction" type="chr">outbound</URI>
</CSP>
</DeclaredConfiguration>
Seules les valeurs prises en charge pour osdefinedscenario
peuvent être utilisées. Les valeurs non prises en charge entraînent un message d’erreur similaire à Invalid scenario name
.
osdefinedscenario | Recommandé d’utiliser avec |
---|---|
MSFTWiredNetwork | WiredNetwork |
MSFTResource | ActiveSync |
MSFTVPN | VPN et VPNv2 |
MSFTWifi | Wi-Fi |
MSFTInventory | Inventaire des certificats |
MSFTClientCertificateInstall | SCEP, PFX, données de modèle en bloc |
Ces osdefinedscenario
valeurs nécessitent les balises et attributs suivants.
La
<CSP>
balise XML décrit le fournisseur de services de configuration ciblé.Cette balise a les attributs suivants :
Attribut Description name
Spécifie l’OMA-URI CSP ciblé. La
<URI>
balise XML spécifie le nœud de paramètre CSP ainsi que la valeur souhaitée.Cette balise a les attributs suivants :
Attribut Description path
Définition du chemin d’accès type
Définition du type de données
Remarque
La cible des paramètres de scénario doit correspondre au contexte WinDC.
L’étendue CSP définie dans et le <LocURI>
contexte WinDC doit être Device
ou User
.
exemples osdefinedscenario
Exemple partiel
MSFTWifi
pour Wifi :<DeclaredConfiguration context="Device" schema="1.0" id="10249228-e719-58bf-b459-060de45240f1" osdefinedscenario="MSFTWifi" checksum="11111111"> <CSP name="./Vendor/MSFT/WiFi">
Exemple partiel
MSFTResource
pour ActiveSync :<DeclaredConfiguration context="User" schema="1.0" id="33333333-1861-4131-96e8-44444444" osdefinedscenario="MSFTResource" checksum="5555"> <CSP name="./Vendor/MSFT/ActiveSync">
Exemples SyncML
La syntaxe SyncML OMA-DM standard est utilisée pour spécifier les opérations CSP DeclaredConfiguration telles que Remplacer, Ajouter et Supprimer. La charge utile de l’élément syncML <Data>
doit être encodée au format XML. Pour cet encodage XML, vous pouvez utiliser différents encodeurs en ligne. Pour éviter d’encoder la charge utile, vous pouvez utiliser la section CDATA , comme indiqué dans les exemples SyncML suivants.
Configurer un profil VPNv2 pour l’accès aux ressources
Cet exemple montre comment utiliser le fournisseur de services de configuration VPNv2 pour configurer un profil VPN nommé Test_SonicWall sur l’appareil dans l’étendue Utilisateur .
<SyncML xmlns="SYNCML:SYNCML1.1">
<SyncBody>
<Replace>
<CmdID>2</CmdID>
<Item>
<Meta>
<Format>chr</Format>
<Type>text/plain</Type>
</Meta>
<Target>
<LocURI>./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/DCA000B5-397D-40A1-AABF-40B25078A7F9/Document</LocURI>
</Target>
<Data><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<DeclaredConfiguration context="user" schema="1.0" id="DCA000B5-397D-40A1-AABF-40B25078A7F9" osdefinedscenario="MSFTVPN" checksum="A0">
<CSP name="./Vendor/MSFT/VPNv2">
<URI path="Test_SonicWall/TrafficFilterList/0/Protocol" type="int">2</URI>
<URI path="Test_SonicWall/TrafficFilterList/0/Direction" type="chr">outbound</URI>
<URI path="Test_SonicWall/TrafficFilterList/1/Protocol" type="int">6</URI>
<URI path="Test_SonicWall/TrafficFilterList/1/LocalPortRanges" type="chr">43-54</URI>
<URI path="Test_SonicWall/TrafficFilterList/1/RemotePortRanges" type="chr">243-456</URI>
<URI path="Test_SonicWall/TrafficFilterList/1/Direction" type="chr">outbound</URI>
<URI path="Test_SonicWall/EdpModeId" type="chr">wip.contoso.com</URI>
<URI path="Test_SonicWall/RememberCredentials" type="bool">true</URI>
<URI path="Test_SonicWall/AlwaysOn" type="bool">true</URI>
<URI path="Test_SonicWall/Proxy/AutoConfigUrl" type="chr">https://auto.proxy.com</URI>
<URI path="Test_SonicWall/DeviceCompliance/Enabled" type="bool">true</URI>
<URI path="Test_SonicWall/DeviceCompliance/Sso/Enabled" type="bool">false</URI>
<URI path="Test_SonicWall/PluginProfile/ServerUrlList" type="chr">23.54.3.6;server1,vpn.contoso.com;server2</URI>
<URI path="Test_SonicWall/PluginProfile/CustomConfiguration" type="chr"><custom></custom></URI>
<URI path="Test_SonicWall/PluginProfile/PluginPackageFamilyName" type="chr">SonicWALL.MobileConnect_e5kpm93dbe93j</URI>
</CSP>
</DeclaredConfiguration>
]]></Data>
</Item>
</Replace>
<Final />
</SyncBody>
</SyncML>
Mise à jour d’un profil VPNv2 pour l’accès aux ressources
Cet exemple montre comment utiliser le même ID de document WinDC, mais avec une nouvelle somme de contrôle (« A3 »). Il installe un nouveau profil VPNv2 nommé Test_SonicwallNew
et supprime l’ancien profil.
<SyncML xmlns="SYNCML:SYNCML1.1">
<SyncBody>
<Replace>
<CmdID>2</CmdID>
<Item>
<Meta>
<Format>chr</Format>
<Type>text/plain</Type>
</Meta>
<Target>
<LocURI>./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/DCA000B5-397D-40A1-AABF-40B25078A7F9/Document</LocURI>
</Target>
<Data><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<DeclaredConfiguration context="user" schema="1.0" id="DCA000B5-397D-40A1-AABF-40B25078A7F9" osdefinedscenario="MSFTVPN" checksum="A3">
<CSP name="./Vendor/MSFT/VPNv2">
<URI path="Test_SonicWallNew/TrafficFilterList/0/Protocol" type="int">2</URI>
<URI path="Test_SonicWallNew/TrafficFilterList/0/Direction" type="chr">outbound</URI>
<URI path="Test_SonicWallNew/EdpModeId" type="chr">wip.contoso.com</URI>
<URI path="Test_SonicWallNew/RememberCredentials" type="bool">true</URI>
<URI path="Test_SonicWallNew/AlwaysOn" type="bool">false</URI>
<URI path="Test_SonicWallNew/Proxy/AutoConfigUrl" type="chr">https://auto.proxy.com</URI>
<URI path="Test_SonicWallNew/DeviceCompliance/Enabled" type="bool">true</URI>
<URI path="Test_SonicWallNew/DeviceCompliance/Sso/Enabled" type="bool">false</URI>
<URI path="Test_SonicWallNew/PluginProfile/ServerUrlList" type="chr">23.54.3.8;server1,vpn2.contoso.com;server2</URI>
<URI path="Test_SonicWallNew/PluginProfile/PluginPackageFamilyName" type="chr">SonicWALL.MobileConnect_e5kpm93dbe93j</URI>
</CSP>
</DeclaredConfiguration>
]]></Data>
</Item>
</Replace>
<Final />
</SyncBody>
</SyncML>
Obtention du profil VPNv2
Cet exemple montre comment utiliser <Get>
pour récupérer les résultats de la requête WinDC.
<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.1">
<SyncBody>
<Get>
<CmdID>1</CmdID>
<Item>
<Meta>
<Format>chr</Format>
<Type>text/plain</Type>
</Meta>
<Target>
<LocURI>./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results/DCA000B5-397D-40A1-AABF-40B25078A7F9/Document</LocURI>
</Target>
</Item>
</Get>
<Final />
</SyncBody>
</SyncML>
Réponse :
<SyncML xmlns:msft="http://schemas.microsoft.com/MobileDevice/MDM">
<SyncHdr />
<SyncBody>
<Status>
<CmdID>1</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>0</CmdRef>
<Cmd>SyncHdr</Cmd>
<Data>200</Data>
</Status>
<Status>
<CmdID>2</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>2</CmdRef>
<Cmd>Get</Cmd>
<Data>200</Data>
</Status>
<Results>
<CmdID>3</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>2</CmdRef>
<Item>
<Source>
<LocURI>./User/Vendor/MSFT/DeclaredConfiguration/Host/BulkTemplate/Results/DCA000B5-397D-40A1-AABF-40B25078A7F9/Document</LocURI>
</Source>
<Data><DeclaredConfigurationResult context="user" schema="1.0" id="DCA000B5-397D-40A1-AABF-40B25078A7F9" osdefinedscenario="MSFTVPN" checksum="A3" result_checksum="9D2ED497C12D2FCEE1C45158D1F7ED8E2DACE210A0B8197A305417882991C978" result_timestamp="2024-08-06T13:54:38Z" operation="Set" state="60"><CSP name="./Vendor/MSFT/VPNv2" state="60"><URI path="Test_SonicWallNew/TrafficFilterList/0/Protocol" status="200" state="60" type="int" /><URI path="Test_SonicWallNew/TrafficFilterList/0/Direction" status="200" state="60" type="chr" /><URI path="Test_SonicWallNew/EdpModeId" status="200" state="60" type="chr" /><URI path="Test_SonicWallNew/RememberCredentials" status="200" state="60" type="bool" /><URI path="Test_SonicWallNew/AlwaysOn" status="200" state="60" type="bool" /><URI path="Test_SonicWallNew/Proxy/AutoConfigUrl" status="200" state="60" type="chr" /><URI path="Test_SonicWallNew/DeviceCompliance/Enabled" status="200" state="60" type="bool" /><URI path="Test_SonicWallNew/DeviceCompliance/Sso/Enabled" status="200" state="60" type="bool" /><URI path="Test_SonicWallNew/PluginProfile/ServerUrlList" status="200" state="60" type="chr" /><URI path="Test_SonicWallNew/PluginProfile/PluginPackageFamilyName" status="200" state="60" type="chr" /></CSP></DeclaredConfigurationResult></Data>
</Item>
</Results>
<Final />
</SyncBody>
</SyncML>
Astuce
Pour comprendre les valeurs d’état, consultez États WinDC.
Suppression du profil VPNv2
Cet exemple montre comment utiliser <Delete>
pour supprimer la demande de configuration pour définir le profil VPNv2.
<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.1">
<SyncBody>
<Delete>
<CmdID>1</CmdID>
<Item>
<Meta>
<Format>chr</Format>
<Type>text/plain</Type>
</Meta>
<Target>
<LocURI>./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/DCA000B5-397D-40A1-AABF-40B25078A7F9/Document</LocURI>
</Target>
</Item>
</Delete>
<Final />
</SyncBody>
</SyncML>
Propriété de la ressource
Les ressources gérées par GPM, telles qu’un profil VPN, sont transférées/migrées vers la gestion WinDC lorsqu’un document WinDC est envoyé à l’appareil pour la même ressource. Cette ressource reste sous gestion WinDC jusqu’à ce que le document WinDC soit supprimé ou abandonné. Sinon, lorsque GPM tente de gérer la même ressource via le canal MDM hérité à l’aide de SyncML, il échoue avec une erreur 0x86000031.
MDM ConfigurationManager: Command failure status. Configuraton Source ID: (29c383c5-6e2d-43bf-a741-c63cb7516bb4), Enrollment Type: (MDMDeviceWithAAD), CSP Name: (ActiveSync), Command Type: (Add: from Replace or Add), CSP URI: (./User/Vendor/MSFT/ActiveSync/Accounts/{3b8b9d4d-a24e-4c6d-a460-034d0bfb9316}), Result: (Unknown Win32 Error code: 0x86000031).
Données de modèle en bloc
Le scénario de données de modèle en bloc s’étend au-delà du fournisseur de services de configuration ClientCertificateInstall standard. Il utilise un type de document de modèle en bloc spécial. Cette section couvre la structure, la spécification et les résultats de l’utilisation des données de modèle en bloc.
Modèle de document
Un document de modèle PFXImport contient la structure nécessaire à l’importation de certificats en bloc. Le document doit définir les champs nécessaires et le format requis pour l’importation en bloc.
- Le type de document doit être
BulkTemplate
. - Le chemin de l’URI est différent des URI standard en utilisant la
@#pfxThumbprint#
syntaxe . Il déclare qu’il s’agit d’un nœud dynamique. Les données d’instance pour les nœuds dynamiques sont envoyées ultérieurement à l’aide deBulkVariables
. Chaque nœud dynamique peut contenir des sous-nœuds dynamiques, tels que les@#pfxBlob#
nœuds et#@pfxPassword#
dans cet exemple.
<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.1">
<SyncBody>
<Replace>
<CmdID>2</CmdID>
<Item>
<Meta>
<Format>chr</Format>
<Type>text/plain</Type>
</Meta>
<Target>
<LocURI>./Device/Vendor/MSFT/DeclaredConfiguration/Host/BulkTemplate/Documents/47e88660-1861-4131-96e8-f32e85011e55/Document</LocURI>
</Target>
<Data><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<DeclaredConfiguration context="Device" schema="1.0" id="47e88660-1861-4131-96e8-f32e85011e55" osdefinedscenario="MSFTResource" checksum="FF356C2C71F6A41F9AB4A601AD00C8B5BC7531576233010B13A221A9FE1BE7A0">
<ReflectedProperties>
<Property name="foo" type="chr">foovalue</Property>
<Property name="bar" type="chr">barvalue</Property>
</ReflectedProperties>
<CSP name="./Vendor/MSFT/ClientCertificateInstall">
<URI path="PFXCertInstall/@#pfxThumbprint#/KeyLocation" type="Int">2</URI>
<URI path="PFXCertInstall/@#pfxThumbprint#/PFXCertBlob" type="chr">@#pfxBlob#</URI>
<URI path="PFXCertInstall/@#pfxThumbprint#/PFXCertPassword" type="chr">@#pfxPassword#</URI>
<URI path="PFXCertInstall/@#pfxThumbprint#/PFXKeyExportable" type="bool">True</URI>
<URI path="PFXCertInstall/@#pfxThumbprint#/PfxCertPasswordEncryptionType" type="int">0</URI>
<URI path="PFXCertInstall/@#pfxThumbprint#/PfxCertPasswordEncryptionStore" type="chr">SomeValue</URI>
<URI path="PFXCertInstall/@#pfxThumbprint#/ContainerName" type="chr"></URI>
</CSP>
</DeclaredConfiguration>
]]></Data>
</Item>
</Replace>
<Final />
</SyncBody>
</SyncML>
Données de modèle
Les données de modèle en bloc spécifient les certificats à importer dans un format codé en base64 à l’aide de l’URI BulkVariables
sous .BulkTemplate
Le document de données du modèle peut contenir plusieurs instances. Chaque instance doit spécifier toutes les données de sous-instance.
Dans cet exemple, il existe deux instances. Chaque instance définit des valeurs pour pfxThumbprint, un **pfxBlob et un pfxPassword.
<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.1">
<SyncBody>
<Replace>
<CmdID>3</CmdID>
<Item>
<Meta>
<Format>chr</Format>
<Type>text/plain</Type>
</Meta>
<Target>
<LocURI>./Device/Vendor/MSFT/DeclaredConfiguration/Host/BulkTemplate/Documents/47e88660-1861-4131-96e8-f32e85011e55/BulkVariables/Value</LocURI>
</Target>
<Data><![CDATA[
<InstanceBlob schema="1.0">
<Instance>
<InstanceData variable="pfxThumbprint">813A171D7341E1DA90D4A01878DD5328D3519006</InstanceData>
<InstanceData variable="pfxBlob">pfxbase64BlobValue1</InstanceData>
<InstanceData variable="pfxPassword">Password1</InstanceData>
</Instance>
<Instance>
<InstanceData variable="pfxThumbprint">813A171D7341E1DA90D4A01878DD5328D3519007</InstanceData>
<InstanceData variable="pfxBlob">pfxbase64BlobValue2</InstanceData>
<InstanceData variable="pfxPassword">Password2</InstanceData>
</Instance>
</InstanceBlob>
]]></Data>
</Item>
</Replace>
<Final />
</SyncBody>
</SyncML>
Résultats du modèle
Lorsque le document de données de modèle en bloc est correctement traité, les certificats spécifiés sont importés dans les magasins définis avec les mots de passe et les emplacements de clé fournis.
- Importation réussie : les certificats sont correctement importés dans les magasins de certificats de l’appareil.
- Gestion des erreurs : toutes les erreurs rencontrées pendant le processus d’importation incluent des codes de status ou des messages pertinents pour la résolution des problèmes.
Demande :
<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.1">
<SyncBody>
<Get>
<CmdID>2</CmdID>
<Item>
<Meta>
<Format>chr</Format>
<Type>text/plain</Type>
</Meta>
<Target>
<LocURI>./Device/Vendor/MSFT/DeclaredConfiguration/Host/BulkTemplate/Results/47e88660-1861-4131-96e8-f32e85011e55/Document</LocURI>
</Target>
</Item>
</Get>
<Final />
</SyncBody>
</SyncML>
Réponse :
<SyncML xmlns:msft="http://schemas.microsoft.com/MobileDevice/MDM">
<SyncHdr />
<SyncBody>
<Status>
<CmdID>1</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>0</CmdRef>
<Cmd>SyncHdr</Cmd>
<Data>200</Data>
</Status>
<Status>
<CmdID>2</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>2</CmdRef>
<Cmd>Get</Cmd>
<Data>200</Data>
</Status>
<Results>
<CmdID>3</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>2</CmdRef>
<Item>
<Source>
<LocURI>./Device/Vendor/MSFT/DeclaredConfiguration/Host/BulkTemplate/Results/47e88660-1861-4131-96e8-f32e85011e55/Document</LocURI>
</Source>
<Data><DeclaredConfigurationResult context="Device" schema="1.0" id="47e88660-1861-4131-96e8-f32e85011e55" osdefinedscenario="MSFTResource" checksum="FF356C2C71F6A41F9AB4A601AD00C8B5BC7531576233010B13A221A9FE1BE7A0" result_checksum="DD8C1C422D50A410C2949BA5F495C2C42CC4B0C7B498D1B43318C503F6CEF491" result_timestamp="2024-08-06T13:26:23Z" operation="Set" state="60">
<CSP name="./Vendor/MSFT/ClientCertificateInstall" state="60">
<URI path="PFXCertInstall/813A171D7341E1DA90D4A01878DD5328D3519006/KeyLocation" status="200" state="60" type="int" />
<URI path="PFXCertInstall/813A171D7341E1DA90D4A01878DD5328D3519006/PFXCertBlob" status="200" state="60" type="chr" />
<URI path="PFXCertInstall/813A171D7341E1DA90D4A01878DD5328D3519006/PFXCertPassword" status="200" state="60" type="chr" />
<URI path="PFXCertInstall/813A171D7341E1DA90D4A01878DD5328D3519006/PFXKeyExportable" status="200" state="60" type="bool" />
</CSP><CSP name="./Vendor/MSFT/ClientCertificateInstall" state="60">
<URI path="PFXCertInstall/CertPFX1/KeyLocation" status="200" state="60" type="int" />
<URI path="PFXCertInstall/CertPFX1/PFXCertBlob" status="200" state="60" type="chr" />
<URI path="PFXCertInstall/CertPFX1/PFXCertPassword" status="200" state="60" type="chr" />
<URI path="PFXCertInstall/CertPFX1/PFXKeyExportable" status="200" state="60" type="bool" />
</CSP>
</DeclaredConfigurationResult>
</Data>
</Item>
</Results>
<Final />
</SyncBody>
</SyncML>