Ich habe ein PFX-Zertifikat mit der Visual Studio Developer-Eingabeaufforderung wie folgt erstellt.
makecert -r -pe -n "CN=mycert" -sky exchange "mycert.cer" -sv "mycert.pvk"
pvk2pfx -pvk "mycert.pvk" -spc "mycert.cer" -pfx "mycert.pfx" -pi [password]
Dann benutze ich PowerShell, um das Zertifikat abzufragen
$cert = Get-PfxCertificate [Location]
$cert.Verify()
# Returns 'False'
Wie kann ich dieses Zertifikat für die Verschlüsselung verwenden?
Aktualisieren
@ root vorgeschlagen mit Import-PfxCertificate
Befehl. Dies ist, was passiert, wenn ich es laufen lasse.
Import-PfxCertificate -FilePath [Path]
Import-PfxCertificate : The PFX file you are trying to import requires either a different password or membership in an Active Directory principal to which it is protected.
At line:1 char:1
+ Import-PfxCertificate -FilePath [...]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Import-PfxCertificate], Win32Exception
+ FullyQualifiedErrorId : System.ComponentModel.Win32Exception,Microsoft.CertificateServices.Commands.Im
portPfxCertificate
Weiteres Update
@ McDonald's schlug eine sichere Methode vor, um das Passwort an das zu übergeben Import-PfxCertificate
Befehl. Das habe ich versucht;
Import-PfxCertificate -FilePath [Path] -Password (Get-Credential).Password
$cert = dir cert:\localmachine\my | where { $_.Thumbprint -eq [Thumbprint] } | Select-Object
$cert.Verify()
Gibt immer noch false zurück. Noch mehr Hinweise?
powershell
certificate
Steztric
quelle
quelle
$cert.Verify()
gibt false zurück. Aufgrund dieses neuen Fehlers denke ich jedoch nicht, dass dies tatsächlich mein Problem ist. Vielmehr ist das Zertifikat falsch konfiguriert. Meine Frage ist, warum das Zertifikat falsch konfiguriert ist.Import-PfxCertificate –FilePath C:\mycert.cer cert:\localMachine\my -Password (ConvertTo-SecureString -String "[Password]" -Force –AsPlainText)
.... technet.microsoft.com/en-us/itpro/powershell/windows/pkiclient/…Antworten:
Das
Verify
Methode prüft, ob ein Zertifikat vertrauenswürdig ist. Um genau zu sehen, warum die Überprüfung fehlschlägt, müssen wir die Kette erstellen:Wenn ich Ihre Schritte wiederhole und diese Befehle ausführe, erhalte ich eine Status von
UntrustedRoot
. Dies bedeutet, dass die Überprüfung fehlgeschlagen ist, da das Zertifikat nicht von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde-r
einschaltenmakecert
).Importieren Sie das Zertifikat in den Speicher vertrauenswürdiger Stammzertifizierungsstellen, um es zu überprüfen:
Geben Sie das PFX-Passwort ein, akzeptieren Sie den großen Warndialog und das Zertifikat wird hinzugefügt. Dann wird die Überprüfung bestanden. Wenn Sie GUIs bevorzugen,
certmgr.msc
werde den Job machen.Sie können die RSA-Parameter problemlos verwenden, ohne dass das Zertifikat von Ihrem Computer als vertrauenswürdig eingestuft wird. Angenommen, die Nummer 137 ist eine geheime Nachricht an den Inhaber des privaten Schlüssels. Wir können den öffentlichen Schlüssel verwenden, um unsere Nachricht zu verschlüsseln:
Dann irgendwie das resultierende verschlüsselte große Array von Bytes (nennen Sie es
$message
) gelangt zum privaten Schlüsselhalter, der die ursprüngliche Nummer wiederfindet:Normalerweise etwas Interessanteres / Fortgeschritteneres ( siehe MSDN ) wäre mit den Schlüsseln erledigt. Der Punkt ist, dass Anwendungen das Zertifikat verwenden können, ohne dass es vom Computer als vertrauenswürdig eingestuft wird.
quelle
Ich habe die Antwort von @ BenN akzeptiert, da dies die eigentliche Lösung ist. Ich wollte die Dinge, die ich gelernt habe, zu einem zusammenhängenden Prozess zusammenfassen, damit andere leicht Zertifikate für die Verschlüsselung generieren können.
Schritt 1: Erstellen Sie ein Zertifikat
Das Zertifikat ist nicht vertrauenswürdig
Schritt 2: Exportieren Sie das PFX-Zertifikat
Schritt 3: Installieren Sie das Zertifikat im Stammzertifikatsspeicher
Schritt 4: Überprüfen Sie das Zertifikat erneut
Befolgen Sie dann die Anweisungen von @ BenN zur Verwendung des Zertifikats für die Entschlüsselung.
quelle