I always use mmc as the wizard to manage certificates but I needed to do some certificate work and I wondered if there was a way of automating it.
Turns out you can with PowerShell.
Instead of \cd to a drive, you go to the certificate store with:
cd CERT:\\
Then:
PS Cert:\> dir
Location : CurrentUser
StoreNames : {ACRS, SmartCardRoot, Root, Trust...}
Location : LocalMachine
StoreNames : {TrustedPublisher, ClientAuthIssuer, Remote Desktop, Root...}
Then we can do things like:
dir .\\CurrentUser\My
dir .\\LocalMachine\My
which gives a list:
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My
Thumbprint Subject
---------- -------
If we want to see the structure, we can do:
PS Cert:\currentuser> get-childitem
which gives:
Name : ACRS
Name : SmartCardRoot
Name : Root
Name : Trust
Name : AuthRoot
Name : CA
Name : UserDS
Name : Disallowed
Name : My
Name : TrustedPeople
Name : TrustedPublisher
Name : ClientAuthIssuer
If we want to find a certificate with a particular thumbprint, we can use:
Get-ChildItem -Path 'thumbprint' -recurs
which gives:
PS Cert:\> Get-ChildItem -Path 'CD...72' -recurse
PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\Root
Thumbprint Subject
---------- -------
CD...72 CN=Microsoft Root Certificate Authority, DC=microsoft, DC=com
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root
Thumbprint Subject
---------- -------
CD...72 CN=Microsoft Root Certificate Authority, DC=microsoft, DC=com
or we can get a list:
Get-ChildItem -Path 'thumbprint' -recurse | Format-List -Property *
which gives:
PSPath : Microsoft.PowerShell.Security\Certificate::CurrentUser\Root\CD...72
PSParentPath : Microsoft.PowerShell.Security\Certificate::CurrentUser\Root
PSChildName : CD...72
PSDrive : Cert
PSProvider : Microsoft.PowerShell.Security\Certificate
PSIsContainer : False
EnhancedKeyUsageList : {}
DnsNameList : {Microsoft Root Certificate Authority}
SendAsTrustedIssuer : False
EnrollmentPolicyEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty
EnrollmentServerEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty
PolicyId :
Archived : False
Extensions : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid,
System.Security.Cryptography.Oid, System.Security.Cryptography.Oid}
FriendlyName : Microsoft Root Certificate Authority
IssuerName : System.Security.Cryptography.X509Certificates.X500DistinguishedName
NotAfter : 10/05/2031 11:28:13 AM
NotBefore : 10/05/2011 11:19:22 AM
HasPrivateKey : False
PrivateKey :
PublicKey : System.Security.Cryptography.X509Certificates.PublicKey
RawData : {48, ... 153}
SerialNumber : 79...65
SubjectName : System.Security.Cryptography.X509Certificates.X500DistinguishedName
SignatureAlgorithm : System.Security.Cryptography.Oid
Thumbprint : CD...72
Version : 3
Handle : 25...92
Issuer : CN=Microsoft Root Certificate Authority, DC=microsoft, DC=com
Subject : CN=Microsoft Root Certificate Authority, DC=microsoft, DC=com
Enjoy!
No comments:
Post a Comment