Comment détecter si un cert particulier a été installé sur une boîte Windows?

Un pré-requirejs pour un deployment d'application particulier est que nous avons besoin d'un certificate PKI particulier installé dans le magasin CERt des éditeurs Windows Trusted Publishers avant d'installer.

Existe-t-il un moyen de détecter si un cert particulier a déjà été installé? Idéalement, utilisez une command one-liner ou un script court (qui pourrait être utilisé pour la détection pré-réq ou comme vérification de dépendance dans SCCM 2012)?

Il semble y avoir beaucoup de commands et de scripts là-bas pour la list de tous les certs installés, ou tous les certs installés expirent bientôt, mais rien que je peux voir pour identifier si un cert particulier est installé.

Ceci est possible avec un PowerShell one-liner, vous avez juste besoin d'un moyen facile d'identifier ce cert (j'utilise le ThumbPrint du cert).

Si vous avez déjà une machine connue, vous savez que le cert est installé (le moyen le plus simple de vérifier de façon interactive est en utilisant simplement certmgr.msc ), vous pouvez utiliser cette machine pour find l'empreinte digitale de cert.

La command PowerShell suivante répertorie tous les certs installés dans le magasin Trusted Publisher dans le context local de la machine:

 Get-ChildItem -Path Cert:\LocalMachine\TrustedPublisher 

De toute évidence, le path ci-dessus peut être modifié, pour répertorier d'autres magasins de cert, ou vous pouvez afficher (une longue list de) tous les certs installés localement en utilisant:

 Get-ChildItem -Path Cert: -Recurse 

La première command devrait vous donner quelque chose comme ceci:

 PS C:\> Get-ChildItem -Path Cert:\LocalMachine\TrustedPublisher Directory: Microsoft.PowerShell.Security\Certificate::LocalMachine\TrustedPublisher Thumbprint Subject ---------- ------- 83EDC96EC3D55125EFFC77BC815F9133E268D5EB CN="User, Test", OU=Testing Resources... 4DFF713712084D43DE6879C689F9A143C4A793BF CN=Server One Self-signed 

Une fois que vous avez trouvé l'empreinte digitale du cert que vous searchz, vous pouvez l'utiliser pour filterr les résultats comme ceci:

 Get-ChildItem -Path Cert:\LocalMachine\TrustedPublisher | Where-Object {$_.Thumbprint -eq "83EDC96EC3D55125EFFC77BC815F9133E268D5EB"} 

Cela devrait renvoyer les détails du cert s'il est installé, et rien si ce n'est pas le cas. Parmi d'autres utilisations, cette Powershell one-liner peut être utilisée comme méthode de détection de script personnalisée dans une application SCCM 2012.

(Ressources utilisées: utilisez PowerShell pour find des certificates sur lesquels expirer | PowerTip: utilisez PowerShell pour découvrir les empreintes de journaux de certificates | Utilisation de la Cmdlet Where-Object )