登録済みのクライアント証明書は、使用期間が経過すると期限切れになります。 証明書の有効期限は、サーバーによって指定されます。 エンタープライズ アプリケーションへの継続的なアクセスを確保するために、Windows では、ユーザーによってトリガーされる証明書の更新プロセスがサポートされています。 ユーザーは、会社のアカウントの現在のパスワードを指定するように求められます。 登録クライアントは、登録サーバーから新しいクライアント証明書を取得し、古い証明書を削除します。 クライアントは新しい秘密キーと公開キーのペアを生成し、PKCS#7 要求を生成し、PKCS#7 要求に既存の証明書で署名します。 Windows では、MDM クライアント証明書の自動更新もサポートされています。
注
証明書の更新要求がトリガーされる前に、DMClient 構成サービス プロバイダーの EntDMID が設定されていることを確認します。
証明書の自動更新要求
Windows では、ユーザーの操作を必要としない証明書の自動更新 (代理更新 (ROBO) とも呼ばれます) がサポートされています。 自動更新の場合、登録クライアントは既存の MDM クライアント証明書を使用してクライアント トランスポート層セキュリティ (TLS) を実行します。 SOAP ヘッダーにユーザー セキュリティ トークンは必要ありません。 その結果、MDM 証明書登録サーバーは、証明書の自動更新のために証明書ベースのクライアント認証のクライアント TLS をサポートする必要があります。
注
ROBO を使用した登録証明書の証明書の更新は、Microsoft PKI でのみサポートされます。
証明書の自動更新は、WAB 認証を使用して登録されたデバイスでサポートされている唯一の MDM クライアント証明書更新方法です。 つまり、AuthPolicy はフェデレーションに設定されます。 また、サーバーが WAB 認証をサポートしている場合は、MDM 証明書登録サーバーもクライアント TLS をサポートして MDM クライアント証明書を更新する必要があります。
Windows デバイスの場合、MDM クライアント証明書の登録フェーズ中または MDM 管理セクション中に、登録サーバーまたは MDM サーバーは、CertificateStore/My/WSTEP/Renew
URL の下にある 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 登録サーバーと、後で CertificateStore CSP の RenewPeriod ノードと RenewInterval ノードを使用して MDM 管理サーバーによって構成できます。 デバイスは、証明書の有効期限が切れるまで、証明書の自動更新を複数回再試行できます。 証明書を手動で更新する場合、Windows デバイスは、証明書の有効期限が切れるまで、更新の再試行のたびにダイアログをユーザーに通知します。
パラメーターの詳細については、 CertificateStore 構成サービス プロバイダーに関するページを参照してください。
証明書の手動更新とは異なり、証明書の有効期限が既に切れている場合、デバイスは MDM クライアント証明書の自動更新を実行しません。 デバイスが自動的に更新するのに十分な時間を持っていることを確認するには、証明書の有効期限が切れる数か月 (40 から 60 日) 前に更新期間を設定することをお勧めします。 また、更新の再試行間隔を、7 日ごと (毎週) ではなく 4 日から 5 日ごとのように、数日ごとに設定します。 この変更により、デバイスが異なる曜日に接続を試みる可能性が高くなります。
証明書の更新応答
RequestType が [更新] に設定されている場合、Web サービスは (初期登録に加えて) 次のことを確認します。
- PKCS#7 BinarySecurityToken の署名が正しい
- クライアントの証明書が更新期間内である
- 証明書は登録サービスによって発行されます
- 要求元は、初期登録の要求元と同じです
- 標準クライアントの要求の場合、クライアントはブロックされません
検証が完了すると、Web サービスは PKCS#7 BinarySecurityToken から PKCS#10 コンテンツを取得します。 残りは初期登録と同じですが、プロビジョニング XML には CA によって発行された新しい証明書のみが必要です。
注
HTTP サーバーの応答をチャンクすることはできません。1 つのメッセージとして送信する必要があります。
次の例は、証明書の更新応答の詳細を示しています。
<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 登録と証明書の更新プロセスでは、次の構成サービス プロバイダーがサポートされます。