J'ai créé un certificat de machine. Il apparaît dans les certificats (ordinateur local) \ Certificats Personal \ Certificats Strong> Dossier de référentiel de certificats. Maintenant, je souhaite extraire son empreinte avec une utilitaire de ligne de commande. P>
Malheureusement, la chose la plus proche que je puisse trouver est dans Cet article . P>
Je dois pouvoir effectuer cette procédure sur n'importe quel système d'exploitation Windows commençant par XP. P>
merci. p>
6 Réponses :
vieux, mais peut-être que cela aidera quelqu'un. Mettez ce qui suit dans un script PowerShell (.ps1) et exécutez-le. Il imprimera le pouce à l'écran. Regardez le mot envelopper dans ma pâte.
Ce n'est pas une empreinte de pluie, c'est cn
Dans mon cas, je ne pouvais pas utiliser PowerShell, donc j'ai écrit ce script pour fonctionner avec cscript.exe qui vous permettra d'utiliser une expression régulière.
If WScript.Arguments.Count() = 0 Then WScript.Echo "Domain name to search for must be specified as first parameter." WScript.Quit 1 End If domain = WScript.Arguments.Item(0) Set objShell = WScript.CreateObject ("WScript.shell") ' Get all certificate information in store. Set objCert = objShell.Exec("certutil -store my") certOutput = "" Do While objCert.Status = 0 WScript.Sleep 10 Do While Not objCert.StdOut.AtEndOfStream certOutput = certOutput & objCert.StdOut.ReadLine & vbNewLine Loop Loop ' Capture thumb for specified certificate using Regex. Set thumbRegex = New RegExp thumbRegex.Pattern = "Subject:\s+CN=" & domain & "\s*\n.*\n.*\nCert\sHash\(sha1\):\s+(.*)" thumbRegex.IgnoreCase = True thumbRegex.Global = False ' Verify match and trim out white space. Set match = thumbRegex.Execute(certOutput) result = "" If match.Count > 0 Then result = match.Item(0).Submatches(0) result = Replace(result, " ", "") WScript.Echo result Else WScript.Echo "The certificate for """ & domain & """ was not found." WScript.Quit 2 End If
Obtenez empreinte Thumb directement à partir du fichier .cer
Direct à partir de la ligne de commande pour un fichier .cer qui n'est pas installé et supprime les espaces incorporés (peut probablement être amélioré):
Voici un simple script Python pour le faire:
def getThumbPrint(cert, passwd): val = "" info = subprocess.Popen(["certutil", "-p", passwd, cert], shell=False, stdout=subprocess.PIPE) for i in info.communicate()[0].split('\n'): if i.startswith("Cert Hash(sha1):"): val = i.split(':')[1].strip() # There may be more than 1, we want the last one. return val
PowerShell Get-Childitem Certem: \ localmachine \ mon p>
Le script de l'article fait ce que vous voulez. Mettez-le dans un fichier VBS et exécutez-le.
Juste, je l'ai fait. Mais cela dépend de capicom.dll, qui doit être enregistré. Je me demandais s'il y a une utilité utilisant directement API Crypt, pas de dépendances.