potshock
Goto Top

Powershell: Import-Certificate , Meldung unterdrücken

Hallo Powershell User,

ja, ich habe schon wieder eine Powershell Frage bei der ich Deine/Eure Unterstüzung benötige face-wink.

Ich habe ein Script welches mit administrativen Rechten einige PC Konfigurationen vornimmt.
U.a. will ich dort mit folgenden Code ein Zertifikat importieren:
Import-Certificate -FilePath 'Z:\Win10\Conf\MeinZert.pem' -CertStoreLocation 'Cert:\LocalMachine\Root' -Verbose  

Das funktiniert auch einwandfrei. Ich finde das Zertifikat anschliessen unter "Vertauenswürdige Stammzertifizierungsstellen -> Zertifikate"

Doch nun zu meinem Problem:
Ich leite am Anfang meines Scripts Errors in eine Log-Datei um:
$ErrorActionPreference = "SilentlyContinue"  
# Pfad zur Logdatei
$Log = "$env:SystemDrive\Users\$env:USERNAME\Desktop\Error.log"  

In dieser Datei habe ich dann folgende Meldung:
Ausnahme beim Aufrufen von "ReadPolicyId" mit 1 Argument(en):  "Das Objekt oder die Eigenschaft wurde nicht gefunden. 0x80092004 (-2146885628 CRYPT_E_NOT_FOUND)"  
In Zeile:1 Zeichen:1
+ [Microsoft.CertificateServices.Commands.PolicyIdProperty]::ReadPolicy ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : Exception

Zum einen verstehe ich mal wieder nicht, was mir das sagen soll, zum Anderen, da der Import ja funktioniert: Wie werde ich diese Meldung los?

Danke für Deine/Eure Unterstützung und noch einen schönen Tag
Potshock

Content-ID: 610408

Url: https://administrator.de/contentid/610408

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

TK1987
TK1987 06.10.2020 aktualisiert um 13:20:44 Uhr
Goto Top
Moin,

Zitat von @potshock:
Zum einen verstehe ich mal wieder nicht, was mir das sagen soll, zum Anderen, da der Import ja funktioniert
Der Import-Certificate-Befehl scheint das Problem auch nicht zu verursachen.

Guck dir die Fehlermeldung noch mal genau an:
In Zeile:1 Zeichen:1
[Microsoft.CertificateServices.Commands.PolicyIdProperty]::ReadPolicy...
Das ist der Befehl, bei dem der Fehler auftritt.

BTW: $env:SystemDrive\Users\$env:USERNAME ist gleich $Home

Gruß Thomas
potshock
potshock 06.10.2020 aktualisiert um 13:42:29 Uhr
Goto Top
Hallo Thomas,

tja, einen solchen Befehl gibt es weder in In Zeile:1 Zeichen:1 noch sonst irgendwo!

Kommentiere ich nur die import Zeile (Zeile 526) aus
Import-Certificate -FilePath 'Z:\Win10\Conf\MeinZert.pem' -CertStoreLocation 'Cert:\LocalMachine\Root' -Verbose  
ist die Meldung verschwunden.

Edit: Danke für den Hinweis zu $Home!

Viele Grüße
Potshock
cykes
cykes 06.10.2020 aktualisiert um 19:30:30 Uhr
Goto Top
Nabend,

der entscheidende Himweis in der Fehlermeldung ist:
 [...] 0x80092004 (-2146885628 CRYPT_E_NOT_FOUND)
Er findet den zugehörigen Zertifikat-Request (csr) nicht.
Vgl. u.a. https://www.ssl247.de/kb/ssl-certificates/troubleshooting/error-80092004 ...
bzw. https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt- ...

oder nach Error 0x80092004 bzw. CRYPT_E_NOT_FOUND (weiter) suchen.

Gruß

cykes
potshock
potshock 08.10.2020 aktualisiert um 11:02:47 Uhr
Goto Top
Guten Morgen,

ok, habe mir das heute noch mal genauer angeschaut.
Wenn ich das Script in der PS ISE als Administrator laufen lasse, erhalte ich in der ISE noch zusätzlich zur gelogten Error-Meldung folgende Ausgabe:

Ausführlich:
PSPath                   : Microsoft.PowerShell.Security\Certificate::LocalMachine\Root\B3DAB5CAE728720AA2AE82D0AC7043F
                           CA790000D
PSParentPath             : Microsoft.PowerShell.Security\Certificate::LocalMachine\Root
PSChildName              : B3DAB5CAE728720AA2AE82D0AC7043FCA790000D
PSIsContainer            : False
Archived                 : False
Extensions               : {}
FriendlyName             :
IssuerName               : System.Security.Cryptography.X509Certificates.X500DistinguishedName
NotAfter                 : 07.09.2030 13:00:01
NotBefore                : 25.09.2019 13:00:01
HasPrivateKey            : False
PrivateKey               :
PublicKey                : System.Security.Cryptography.X509Certificates.PublicKey
RawData                  : {48, 130, 3, 209...}
SerialNumber             : 13FFE22DB3CC60EEFDB1EE99DCA4984D3DB08DEC
SubjectName              : System.Security.Cryptography.X509Certificates.X500DistinguishedName
SignatureAlgorithm       : System.Security.Cryptography.Oid
Thumbprint               : B3DAB5CAE728720AA2AE82D0AC7043FCA790000D
Version                  : 1
Handle                   : 1518802469584
Issuer                   : E=ADMIN@xxxxxxx.de, CN=caffm.xxxxxxxxxxxx.de, OU=xxx, O=xxxxxxxxxxx,
                           L=Bochum, S=NRW, C=DE
Subject                  :  E=ADMIN@xxxxxxx.de, CN=caffm.xxxxxxxxxxxx.de, OU=xxx, O=xxxxxxxxxxx,,
                           L=Bochum, S=NRW, C=DE
EnhancedKeyUsageList     : {}
DnsNameList              : {caffm.xxxxxxx.de}
SendAsTrustedIssuer      : False
EnrollmentPolicyEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty
EnrollmentServerEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty
PolicyId                 :

Edit: Ich habe einige Angaben der Ausgabe nachträglich mit xxxxxx ersetzt!

In dem von cykes verlinktem MS-Artikel steht:
"CRYPT_E_NOT_FOUND = No issuer was found for the subject certificate. "
Wie man aber in der obigen Ausgabe sehen kann, ist der issuer bekannt.

Der Eintrag "PolocyID" ist aber leer. Hier ist dann wohl das Problem.

Und um es nochmal zu betonen das Zertifikat wird importiert und funktioniert auch!

Natürlich möchte ich, daß das Script einwandfrei arbeitet, aber zur Not würde es mir reichen die Meldung zu unterdrücken.

Viele Grüße und besten Dank für Deine/Eure Hilfe
Potshock
146189
146189 08.10.2020 aktualisiert um 10:32:38 Uhr
Goto Top
So wie das aussieht hat der Rechner noch einen pending CSR in seinem Certificate Store. Die Meldung ist dann nur ein Hinweis darauf das das Zertifikat nicht zu dem "pending" CSR passt. Also schau mal in die Stores ob dort noch ein nicht abgeschlossener CSR mit private Key auf Abschluss wartet.
potshock
potshock 08.10.2020 um 10:57:24 Uhr
Goto Top
Hi window,

ich habe jetzt mal via "Zertifikate Verwalten" (certlm) alle Zertifikate durchgesehen, nirgends steht unter "Status" irgendein Zustand, also auch kein "Pending" oder "Steht aus".

Würde mich auch sehr wundern, da ich ein frisch installiertes Testsystem vor mir habe, welches ich nach jeden Scriptlauf wieder per Image zurücksetze.

Was mir allerdings aufgefallen ist das unser Zertifikat dort keinen Anzeigenamen hat. Das gibt es aber auch bei manch anderen standardmässig installierten Zertifikaten, dürfte also keine Rolle spielen. Das ist dann wohl der in der obigen Ausgabe fehlende FriendlyName.

Weitere Ideen, Anregungen?

Viele Grüße
Potshock
potshock
potshock 09.10.2020 um 09:56:31 Uhr
Goto Top
Guten Morgen Unterstützer,

da das importierte Zertifikat ja tut was es soll, werde ich jegliche Ausgabemeldungen des Befehls per " | out-null" ins Nirvana befördern.
Wiederstrebt mir zwar sehr, das Problem nicht lösen zu können und nun jegliche Fehlermeldungen für diesen Befehl zu unterdrücken.

Danke Euch nochmals für Eure Hilfe

Schönes Wochenende
Potshock
146189
146189 09.10.2020 aktualisiert um 10:13:26 Uhr
Goto Top
Hab's mir gerade oben nochmal angesehen, dem Zertifikat fehlen wichtige Eigenschaften wie EnhancedKeyUsage etc... Stell das Zertifikat richtig nach Vorschrift aus dann klappt das auch ohne Fehlermeldung.
potshock
potshock 09.10.2020 um 10:21:46 Uhr
Goto Top
Hi window,

ok, alles klar, das Zertifikat hat ein Kollege erstellt und hat seit dem funktioniert.
Werde mir das mit Ihm nochmal anschauen.

Besten Dank
Potshock
146189
146189 09.10.2020 aktualisiert um 11:23:10 Uhr
Goto Top
Zitat von @potshock:
ok, alles klar, das Zertifikat hat ein Kollege erstellt und hat seit dem funktioniert.
Klar kann ein Zertifikat funktionieren, heißt aber nicht zwingend das auch alle von einer Anwendung vorgeschriebenen Attribute vorhanden sind face-wink. Die OIDs in der ExtendedKeyUsage Property bspw. sind für viele Dinge wichtig und es diverse Software die ein Zertifikat nur anhand dessen klassifizieren/einstufen.