Konvertieren Sie Zertifikat und Privaten Schlüssel auf .PFX-Programm in C#
Habe ich eine .cer-Datei der Ausgabe von einem erfolgreichen LetsEncrypt Zertifikat-Anfrage.
Habe ich die ursprüngliche Private Schlüssel verwendet, um erstellen Sie die Certificate Signing Request (CSR) für LetsEncrypt.
Nun müssen wir programmatisch kombinieren Sie diese beiden Dateien in eine PFX-bundle für IIS verwenden .NET
Da wir versuchen, programmgesteuert pvk2pfx ist nicht praktisch, und wir möchten vermeiden, dass openssl, wenn möglich.
Demonstrieren, aber wir werden versuchen, zu replizieren, diese Funktion aber mit CS .NETTO-statt pvk2pfx:
pvk2pfx.exe -pvk-Server.pvk -spc-Server.cer -pfx-Server.pfx
Habe ich recherchiert, ausführlich und hier sind die Möglichkeiten, die ich sehe:
Einer Methode zu sein scheint, mit X509Certificate2 etwas wie:
//Import the certficate
X509Certificate2 cert = new X509Certificate2("c:\\cert.cer");
//Import the private key
X509Certificate2 cert = new X509Certificate2("c:\\key.pvk");
//Or import the private key - Alternative method
X509DecryptString(token, @"c:\CA.pvk", "mypassword");
//Export the PFX file
certificate.Export(X509ContentType.Pfx, "YourPassword");
File.WriteAllBytes(@"C:\YourCert.pfx", certificateData);
Hier sind einige andere Methoden, aber alle von Ihnen scheinen für das auslassen der Teil über den Privaten Schlüssel oder die Sie benötigen pvk2pfx.exe
Umwandlung von cert-Datei pfx-Datei
https://stackoverflow.com/a/4797392/3693688
So erstellen Sie ein X509Certificate2-programmatisch?
http://www.wiktorzychla.com/2012/12/how-to-create-x509certificate2.html
Auswählen, Erstellen und Finden X509-Zertifikate:
http://www.wou.edu/~rvitolo06/WATK/Demos/HPCImageRendering/code/ImageRendering/AppConfigure/CertHelper.cs
Nicht exportieren erzeugte Zertifikat mit privaten Schlüssel zu byte array
Nicht export generierte Zertifikat mit privaten Schlüssel zu byte-array in .net 4.0/4.5
Programmgesteuert importieren einer pfx-mit einer Kette der Zertifikate in den Zertifikatspeicher.
https://stackoverflow.com/a/9152838/3693688
Importieren .cer und .pvk-Zertifikat-Dateien programmgesteuert in C# für die Verwendung mit netsh http add sslcert
https://gist.github.com/BrandonLWhite/235fa12247f6dc827051
Methode zum konvertieren von cer pfx-cert
https://gist.github.com/domgreen/988684
Jede Hilfe sehr dankbar 🙂
BEARBEITEN 1
CryptoGuy schlug vor, wir müssen diesen link:
https://gist.github.com/BrandonLWhite/235fa12247f6dc827051
Bedeutet das, dass sowas gut wäre?
Sind die CSP-Teile notwendig?
Dank!
using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography;
var PublicKey = AssemblyUtility.GetEmbeddedFileAsByteArray("Cert.cer");
var PrivateKey = AssemblyUtility.GetEmbeddedFileAsByteArray("PrivateKey.pvk");
var certificate = new X509Certificate2(PublicKey, string.Empty,
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
var cspParams = new CspParameters
{
ProviderType = 1,
Flags = CspProviderFlags.UseMachineKeyStore,
KeyContainerName = Guid.NewGuid().ToString().ToUpperInvariant()
};
var rsa = new RSACryptoServiceProvider(cspParams);
rsa.ImportCspBlob(ExtractPrivateKeyBlobFromPvk(PrivateKey));
rsa.PersistKeyInCsp = true;
certificate.PrivateKey = rsa;
certificate.Export(X509ContentType.Pfx, "YourPassword");
File.WriteAllBytes(@"C:\YourCert.pfx", certificateData);
- Einer deiner links (gist.github.com/BrandonLWhite/235fa12247f6dc827051) sieht die richtige Wahl für Sie.
- Dank CryptoGuy
- Ja, CSP-Teile sind Pflicht, denn es ist die einzige unterstützte Methode für das arbeiten mit asymmetrischer Kryptographie in Windows. In kurzen, müssen Sie zum laden einen privaten Schlüssel-Datei (die ist entweder, PKCS#1, PKCS8 oder was auch immer) zu einem LSP, und assoziieren Sie ihn mit ein X509Certificate2-Objekt.
- Interessant, danke! Wie das aussieht, könnte das sein, was wir vermissten vor. Stimmt das Zertifikat.Export(X509ContentType.Pfx...) ein Teil der rechten Aussehen? Ich habe kopiert, die aus einer anderen Quelle und entfernt den Befehl netsh und sCertHash Teile, da ich denke, das brauchen wir nicht, wenn wir nur sparen, um eine pfx-Datei?
- netsh Teil ist eine andere Geschichte (Sie brauchen nicht diese). Alles, was Sie brauchen, ist, um die
ExtractPrivateKeyBlobFromPvk
Methode (ich weiß nicht, wo Sie es bekommen), die im code verwendet wird. Ich würde vermuten, dass sein code nur konvertiert PKCS#1/PKCS#8 private-key zu CryptoAPI private key blob: msdn.microsoft.com/en-us/library/windows/desktop/... - Etwas wie das vielleicht? Systemadministratoren.lv/blog-de/...
- Lassen Sie uns weiter, diese Diskussion im chat.
- Was ist
ExtractPrivateKeyBlobFromPvk
? sehen immer diesen gleichen Ausschnitt in anderen Artikeln, aber keine Erwähnung von wo/wasExtractPrivateKeyBlobFromPvk
ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
CryptoGuy die Antwort, war wirklich hilfreich und wies uns in die richtige Richtung.
Waren wir immer noch kämpfen, um Sie zu importieren einer Binären DER Datei aber dieser code fest, dass:
Wurden diese Seiten nützlich:
https://github.com/openssl-net/openssl-net/blob/master/ManagedOpenSsl/X509/X509Certificate.cs
https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2.rawdata
Danke an alle für Eure Hilfe 🙂