선언된 구성 리소스 액세스
WinDC(Windows 선언된 구성) 리소스 액세스는 디바이스 구성을 관리하고 정책을 적용하여 디바이스가 원하는 상태로 유지되도록 하는 데 사용됩니다. 조직에서 보안, 규정 준수 및 운영 효율성을 유지하는 것이 중요합니다. WinDC 클라우드 서비스는 리소스의 원하는 상태를 디바이스로 보내는 데 사용됩니다. 여기서 디바이스는 리소스 구성 상태를 적용하고 유지 관리할 책임이 있습니다.
CSP(구성 서비스 공급자) 는 리소스 액세스를 구성하는 데 중요한 역할을 하며 디바이스와 WinDC 프로토콜 간의 인터페이스 역할을 합니다. 구성을 배포하고 적용하는 일관되고 표준화된 접근 방식을 제공합니다. CSP는 다음을 비롯한 다양한 리소스 액세스 시나리오를 지원합니다.
- VPNv2 CSP 및 VPN CSP
- Wi-Fi CSP
- ClientCertificateInstall CSP
- ActiveSync CSP
- WiredNetwork CSP
- RootCACertificates CSP
디바이스의 WinDC 스택은 구성 요청을 처리하고 RA의 핵심인 원하는 상태를 유지 관리합니다. 구성 요청의 효율성, 정확도 및 적용은 효과적인 RA에 매우 중요합니다. 리소스 액세스는 WinDC와 원활하게 통합되어 향상된 확장성 및 효율성으로 클라우드를 통해 디바이스를 관리하는 확장된 방법을 제공합니다.
- 효율성: 일괄 처리 기반 처리는 서버 리소스 사용을 최소화하고 대기 시간을 줄입니다.
- 정확도: WinDC 클라이언트 스택은 디바이스의 구성 노출 영역을 이해하여 지속적인 업데이트를 효과적으로 처리할 수 있도록 합니다. 클라우드 서비스에서 전달한 구성 변경 내용의 정확한 실행을 보장합니다.
- 정책 적용: 디바이스 간에 일관되고 대규모로 조직 정책을 적용하고 유지 관리하여 규정 준수 및 균일한 구성을 보장합니다. 이러한 측면을 통해 조직은 디바이스에서 원하는 보안 상태를 유지할 수 있습니다.
리소스 액세스 지침
이러한 지침은 개발자와 테스터가 안전하고 효율적이며 일관된 방식으로 RA(리소스 액세스) 구성을 구현하는 모범 사례와 예제를 제공합니다. 정책 및 규정 준수 요구 사항을 준수하면서 네트워크 보안을 강화하고 최종 사용자에 대한 리소스 액세스를 최적화하는 것을 목표로 합니다.
- 구성 무결성: 중단 없이 안전한 리소스 액세스를 지원하려면 디바이스 및 사용자 간에 일관된 구성을 보장합니다.
- 상태 유효성 검사: 구성 상태를 모니터링하여 리소스 액세스 설정의 올바른 애플리케이션을 확인합니다.
- 프로필 관리: 필요에 따라 추가, 업데이트 및 삭제하여 사용자 프로필을 효과적으로 관리하여 리소스에 대한 액세스를 제어하고 보안을 유지합니다.
- 로그 및 감사: 작업 및 변경 내용에 대한 로그 및 감사 내역을 활용하여 문제 해결 및 규정 준수에 도움이 됩니다.
- 드리프트 검색 및 수정: RA 정책 준수를 유지하려면 드리프트(구성 또는 동작 변경)를 지속적으로 모니터링하고 수정 작업을 수행합니다.
- 보안 및 개인 정보: 사용자 데이터 및 리소스를 보호하려면 구성에서 강력한 보안 및 개인 정보 보호 조치를 구현합니다.
이러한 지침을 따르고 DeclaredConfiguration CSP의 구문을 이해하면 보안 및 규정 준수를 유지하면서 RA 구성을 효과적으로 구현하고 관리할 수 있습니다.
WinDC 문서
DeclaredConfiguration CSP의 Document
리프 노드 값은 요청을 설명하는 XML 문서입니다. 리소스 액세스를 위해 지정된 구성 데이터가 있는 샘플 WinDC 문서는 다음과 같습니다.
<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>
지원되는 값 osdefinedscenario
만 사용할 수 있습니다. 지원되지 않는 값은 과 유사한 오류 메시지를 생성합니다 Invalid scenario name
.
osdefinedscenario | 다음을 사용하는 것이 좋습니다. |
---|---|
MSFTWiredNetwork | WiredNetwork |
MSFTResource | ActiveSync |
MSFTVPN | VPN 및 VPNv2 |
MSFTWifi | Wifi |
MSFTInventory | 인증서 인벤토리 |
MSFTClientCertificateInstall | SCEP, PFX, 대량 템플릿 데이터 |
이러한 osdefinedscenario
값에는 다음 태그 및 특성이 필요합니다.
XML 태그는
<CSP>
대상으로 지정되는 CSP를 설명합니다.이 태그에는 다음과 같은 특성이 있습니다.
특성 설명 name
대상 CSP OMA-URI를 지정합니다. XML 태그는
<URI>
원하는 값과 함께 CSP 설정 노드를 지정합니다.이 태그에는 다음과 같은 특성이 있습니다.
특성 설명 path
설정 경로 type
데이터 형식 설정
참고
시나리오 설정의 대상은 WinDC 컨텍스트와 일치해야 합니다. 및 WinDC 컨텍스트에 <LocURI>
정의된 CSP scope 또는 User
이어야 Device
합니다.
osdefinedscenario 예제
Wifi에 대한 부분
MSFTWifi
예제:<DeclaredConfiguration context="Device" schema="1.0" id="10249228-e719-58bf-b459-060de45240f1" osdefinedscenario="MSFTWifi" checksum="11111111"> <CSP name="./Vendor/MSFT/WiFi">
ActiveSync의 부분
MSFTResource
예제:<DeclaredConfiguration context="User" schema="1.0" id="33333333-1861-4131-96e8-44444444" osdefinedscenario="MSFTResource" checksum="5555"> <CSP name="./Vendor/MSFT/ActiveSync">
SyncML 예제
표준 OMA-DM SyncML 구문은 Replace, Add 및 Delete와 같은 DeclaredConfiguration CSP 작업을 지정하는 데 사용됩니다. SyncML 요소의 <Data>
페이로드는 XML로 인코딩되어야 합니다. 이 XML 인코딩의 경우 사용할 수 있는 다양한 온라인 인코더가 있습니다. 페이로드 인코딩을 방지하려면 다음 SyncML 예제와 같이 CDATA 섹션 을 사용할 수 있습니다.
리소스 액세스를 위한 VPNv2 프로필 구성
이 예제에서는 VPNv2 CSP를 사용하여 사용자 scope 디바이스에서 Test_SonicWall 라는 VPN 프로필을 구성하는 방법을 보여 줍니다.
<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>
리소스 액세스를 위한 VPNv2 프로필 업데이트
이 예제에서는 동일한 WinDC 문서 ID를 사용하지만 새 체크섬("A3")을 사용하는 방법을 보여 줍니다. 라는 Test_SonicwallNew
새 VPNv2 프로필을 설치하고 이전 프로필을 삭제합니다.
<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>
VPNv2 프로필 가져오기
이 예제에서는 를 사용하여 <Get>
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>
응답:
<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>
팁
상태 값을 이해하려면 WinDC 상태를 참조하세요.
VPNv2 프로필 삭제
이 예제에서는 를 사용하여 <Delete>
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>
리소스 소유권
VPN 프로필과 같은 MDM 관리 리소스는 WinDC 문서가 동일한 리소스에 대해 디바이스로 전송될 때 WinDC 관리로 전송/마이그레이션됩니다. 이 리소스는 WinDC 문서가 삭제 되거나 중단될 때까지 WinDC 관리에서 유지 됩니다. 그렇지 않으면 MDM이 SyncML을 사용하여 레거시 MDM 채널을 통해 동일한 리소스를 관리하려고 하면 오류 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).
대량 템플릿 데이터
대량 템플릿 데이터 시나리오는 일반 ClientCertificateInstall CSP 이상으로 확장됩니다. 특수 대량 서식 파일 문서 형식을 사용합니다. 이 섹션에서는 대량 템플릿 데이터 사용의 구조, 사양 및 결과를 설명합니다.
템플릿 문서
PFXImport 템플릿 문서에는 인증서를 대량으로 가져오는 데 필요한 구조가 포함되어 있습니다. 문서는 필요한 필드와 대량 가져오기에 필요한 형식을 정의해야 합니다.
- 문서 형식은 이어야
BulkTemplate
합니다. - URI 경로는 구문을 사용하여
@#pfxThumbprint#
일반 URI와 다르며 동적 노드임을 선언합니다. 동적 노드에 대한 인스턴스 데이터는 나중에 를 사용하여BulkVariables
전송됩니다. 각 동적 노드에는 이 예제의 및 노드와#@pfxPassword#
같은@#pfxBlob#
동적 하위 노드가 포함될 수 있습니다.
<?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>
템플릿 데이터
대량 템플릿 데이터는 아래의 URI를 사용하여 BulkVariables
base64로 인코딩된 형식으로 가져올 인증서를 BulkTemplate
지정합니다. 템플릿 데이터 문서에는 여러 인스턴스가 포함될 수 있습니다. 각 instance 모든 하위 인스탄스 데이터를 지정해야 합니다.
이 예제에는 두 개의 인스턴스가 있습니다. 각 instance pfxThumbprint, **pfxBlob 및 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>
템플릿 결과
대량 템플릿 데이터 문서가 성공적으로 처리되면 지정된 인증서를 제공된 암호 및 키 위치와 함께 정의된 저장소로 가져옵니다.
- 가져오기 성공: 인증서를 디바이스의 인증서 저장소로 올바르게 가져옵니다.
- 오류 처리: 가져오기 프로세스 중에 발생하는 모든 오류에는 관련 상태 코드 또는 문제 해결을 위한 메시지가 포함됩니다.
요청:
<?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>
응답:
<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>