Applies to Windows Server 2012 R2 Preview, Windows Server 2012, Windows 8, and Windows 8.1 Preview Windows 8 and Windows Server 2012 Certificate Authority support the use of Trusted Platform Modules (TPMs) to secure certificate keys. A key storage provider (KSP) named the “Microsoft Platform Crypto Provider” is available for use in which TPMs are provisioned in Windows 8 and Windows Server 2012 computers.
In order to utilize this capability, a certificate template must be configured to use the Microsoft Platform Crypto Provider KSP. This can be done in the template UI by switching to the Cryptography tab and select the “Key Storage Provider” then select the TPM KSP. The configuration would look like this:
We can also select the software KSP, in that case client will try to use TPM KSP first, if that is not available or does not work, the client will move on to use software KSP.
When an administrator is configuring the template, the KSP is enumerated from local computer. The KSP “Microsoft Platform Crypto Provider” is only shown if a TPM is available and properly provisioned. If the administrator needs to configure the KSP using a computer that does not have a TPM installed, the following workaround can be used:
Certutil dump of a template named User_V3:
[User_V3] objectClass = "top", "pKICertificateTemplate" cn = "User_V3" distinguishedName = "CN=User_V3,CN=Certificate Templates,CN=Public Key ervices,CN=Services,CN=Configuration,DC=MyDC,DC=com"
instanceType = "4" whenCreated = "20120714222057.0Z" whenChanged = "20121008225126.0Z" displayName = "User_V3" uSNCreated = "26796" uSNChanged = "97640" showInAdvancedViewOnly = "TRUE" name = "User_V3" objectGUID = "608628c3-2717-451c-892b-b084ff3978d8" flags = "131642" revision = "100" objectCategory = "CN=PKI-Certificate-Template,CN=Schema,CN=Configuration,DC=d9-1351D0423,DC=nttest,DC=microsoft,DC=com" pKIDefaultKeySpec = "1" pKIKeyUsage = "a0" pKIMaxIssuingDepth = "0" pKICriticalExtensions = "2.5.29.15" pKIExpirationPeriod = "1 Years" pKIOverlapPeriod = "6 Weeks" pKIExtendedKeyUsage = "1.3.6.1.4.1.311.10.3.4", "1.3.6.1.5.5.7.3.4", "1.3.6.1.5.5.7.3.2" pKIDefaultCSPs = "1,Microsoft Software Key Storage Provider" dSCorePropagationData = "20120714222100.0Z", "20120714222100.0Z", "16010101000000.0Z" msPKI-RA-Signature = "0" msPKI-Enrollment-Flag = "41" msPKI-Private-Key-Flag = "33685520" msPKI-Certificate-Name-Flag = "-1509949440" msPKI-Minimal-Key-Size = "2048" msPKI-Template-Schema-Version = "3" msPKI-Template-Minor-Revision = "3" msPKI-Cert-Template-OID = "1.3.6.1.4.1.311.21.8.7686780.5497180.1657228.10716309.12491915.247.13620649.13495913" msPKI-Certificate-Application-Policy = "1.3.6.1.4.1.311.10.3.4", "1.3.6.1.5.5.7.3.4", "1.3.6.1.5.5.7.3.2" msPKI-RA-Application-Policies = "msPKI-Asymmetric-Algorithm`PZPWSTR`RSA`msPKI-Hash-Algorithm`PZPWSTR`SHA1`msPKI-Key-Usage`DWORD`16777215`msPKI-Symmetric-Algorithm`PZPWSTR`3DES`msPKI-Symmetric-Key-Length`DWORD`168`"
[TemplateList]
Template = "User_V3"
CertUtil: -dsTemplate command completed successfully.
Kurt L Hudson MSFT edited Revision 4. Comment: Updated to show that this also applies to Windows Server 2012 R2 and Windows 8.1
Kurt L Hudson edited Revision 3. Comment: Edited and updated instructions