註冊的客戶端憑證會在使用一段時間之後過期。 憑證的到期日是由伺服器指定。 為了確保持續存取企業應用程式,Windows 支援使用者觸發的憑證更新程式。 系統會提示使用者提供公司帳戶的目前密碼。 註冊用戶端會從註冊伺服器取得新的用戶端憑證,並刪除舊憑證。 用戶端會產生新的私鑰/公鑰組、產生 PKCS#7 要求。 在 Windows 中,也支援自動 MDM 用戶端憑證更新。
注意
在觸發憑證更新要求之前,請確定已設定 DMClient 設定服務提供者中的 EntDMID。
自動憑證更新要求
Windows 支援自動憑證更新,也稱為「代表 (ROBO) 更新」,不需要任何用戶互動。 針對自動更新,註冊用戶端會使用現有的 MDM 用戶端憑證來執行用戶端傳輸層安全性 (TLS) 。 SOAP 標頭中不需要用戶安全性令牌。 因此,需要 MDM 憑證註冊伺服器才能支援用戶端 TLS 進行憑證型客戶端驗證,以進行自動憑證更新。
注意
只有 Microsoft PKI 才支援透過 ROBO 更新註冊憑證的憑證。
自動憑證更新是使用WAB驗證註冊之裝置唯一支援的MDM用戶端憑證更新方法。 也就是說,AuthPolicy 會設定為 Federated。 這也表示如果伺服器支援 WAB 驗證,則 MDM 憑證註冊伺服器也必須支援用戶端 TLS 來更新 MDM 用戶端憑證。
針對 Windows 裝置,在 MDM 用戶端憑證註冊階段或 MDM 管理期間,註冊伺服器或 MDM 伺服器可以在 URL 下CertificateStore/My/WSTEP/Renew
使用 CertificateStore CSP 的 ROBOSupport 節點,將裝置設定為支援自動 MDM 用戶端憑證更新。
透過自動更新,PKCS#7 訊息內容不會個別編碼 base64。 使用手動憑證更新時,需要 PKCS#7 訊息內容的 base64 編碼。
在自動憑證更新程序期間,如果裝置不信任跟證書,驗證就會失敗。 使用其中一個裝置預安裝的跟證書,或使用 CertificateStore CSP 透過 DM 會話設定跟證書。
在自動憑證更新程式期間,裝置會拒絕來自伺服器的 HTTP 重新導向要求。 如果使用使用者在初始 MDM 註冊程式期間接受的相同重新導向 URL,則不會拒絕要求。
下列範例顯示自動更新要求的詳細數據。
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u=
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<a:Action s:mustUnderstand="1">
http://schemas.microsoft.com/windows/pki/2009/01/enrollment/RST/wstep</a:Action>
<a:MessageID>urn:uuid:61a17f2c-42e9-4a45-9c85-f15c1c8baee8</a:MessageID>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">
https://dm.contoso.com/EnrollmentService/DeviceEnrollmentService.svc</a:To>
<o:Security s:mustUnderstand="1" xmlns:o=
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="_0">
<u:Created>2011-07-11T19:49:08.579Z</u:Created>
<u:Expires>2011-07-11T19:54:08.579Z</u:Expires>
</u:Timestamp>
<o:UsernameToken u:Id="uuid-2a734df6-b227-4e60-82a8-ed53c574b718-5">
<o:Username>user@contoso.com</o:Username>
<o:Password o:Type=
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">
</o:Password>
</o:UsernameToken>
</o:Security>
</s:Header>
<s:Body>
<RequestSecurityToken xmlns="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
<TokenType>
http://schemas.microsoft.com/5.0.0.0/ConfigurationManager/Enrollment/DeviceEnrollmentToken
</TokenType>
<RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Renew</RequestType>
<BinarySecurityToken
ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#PKCS7"
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#base64binary"
xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
BinarySecurityTokenInsertedHere
</BinarySecurityToken>
<AdditionalContext xmlns="http://schemas.xmlsoap.org/ws/2006/12/authorization">
<ContextItem Name="DeviceType">
<Value>WindowsPhone</Value>
</ContextItem>
<ContextItem Name="ApplicationVersion">
<Value>5.0.7616.0</Value>
</ContextItem>
</AdditionalContext>
</RequestSecurityToken>
</s:Body>
</s:Envelope>
憑證更新排程設定
在 Windows 中,更新期間只能在 MDM 註冊階段期間設定。 Windows 支援憑證更新期間和更新失敗重試。 MDM 註冊伺服器和稍後的 MDM 管理伺服器都可使用 CertificateStore CSP 的 RenewPeriod 和 RenewInterval 節點來設定它們。 裝置可以重試多次自動更新憑證,直到憑證過期為止。 針對手動憑證更新,Windows 裝置會在每次更新重試時提醒使用者對話方塊,直到憑證過期為止。
如需參數的詳細資訊,請參閱 CertificateStore 設定服務提供者。
不同於手動憑證更新,如果憑證已過期,裝置不會執行自動 MDM 用戶端憑證更新。 若要確定裝置有足夠的時間可自動續約,建議您在憑證到期前, (40-60 天) 設定幾個月的更新期間。 此外,請將續約重試間隔設定為每隔幾天,例如每隔 4-5 天,而不是每周) (七天。 這項變更會增加裝置嘗試在一周中不同天連線的機會。
憑證更新回應
當 RequestType 設定為 Renew 時,除了初始註冊) 之外,Web 服務還會驗證下列 (:
- PKCS#7 BinarySecurityToken 的簽章正確無誤
- 用戶端的憑證處於更新期間
- 憑證是由註冊服務所發行
- 要求者與初始註冊的要求者相同
- 針對標準用戶端的要求,不會封鎖用戶端
驗證完成之後,Web 服務會從 PKCS#7 BinarySecurityToken 擷取 PKCS#10 內容。 其餘部分與初始註冊相同,不同之處在於布建 XML 只需要有 CA 所簽發的新憑證。
注意
HTTP 伺服器回應不得區塊化;它必須以一個訊息傳送。
下列範例顯示憑證更新回應的詳細數據。
<wap-provisioningdoc version="1.1">
<characteristic type="CertificateStore">
<!-- Root certificate provision is only needed here if it is not in the device already -->
<characteristic type="Root">
<characteristic type="System">
<characteristic type="EncodedRootCertHashInsertedHere ">
<parm name="EncodedCertificate" value="EncodedCertInsertedHere" />
</characteristic>
</characteristic>
</characteristic>
<characteristic type="My" >
<characteristic type="User">
<characteristic type="EncodedClientCertHashInsertedHere">
<parm name="EncodedCertificate" value="EncodedCertInsertedHere" />
<characteristic type="PrivateKeyContainer"/>
</characteristic>
</characteristic>
</characteristic>
</characteristic>
<characteristic type="APPLICATION">
<parm name="PROVIDER-ID" value="TestMDMServer"/>
</characteristic>
</wap-provisioningdoc>
注意
用戶端會收到新的憑證,而不是更新初始憑證。 系統管理員會控制客戶端應該使用的證書範本。 在更新時間,範本可能會與初始註冊時間不同。
MDM 註冊和憑證更新期間支持的設定服務提供者
在 MDM 註冊和憑證更新程式期間,支援下列設定服務提供者。