Ist es möglich, ein X509Certificate2 in einer SQL Server-Tabelle zu speichern, anstatt eine .p12-Datei aus dem Dateisystem zu ziehen? Ich bin sicher, Sie können, aber nicht sicher, wie das geht.Ein X509Certificate2 in DB speichern
7
A
Antwort
8
Dies ist definitiv möglich, das X509Certificate2 hat eine RawData Eigenschaft, die in Ihrer SQL-Datenbank gespeichert werden kann. Um das Zertifikat zu rekonstruieren können Sie diese constructor verwenden
var cert = new X509Certificate2(filename);
var data = cert.RawData;
// save data to database...
// Fetch data from database...
cert = new X509Certificate2(data);
3
Verwenden .export() dann Convert.ToBase64String() und speichern als NVARCHAR (MAX)
es sparen:
var cert = new X509Certificate2(filename);
var stringOfCertWithPrivateKey = Convert.ToBase64String(cert.Export(X509ContentType.Pkcs12));
// Or as a regular cert, which will strip the private key out
var stringOfCertWithoutPrivateKey = Convert.ToBase64String(cert.Export(X509ContentType.Cert));
// Save either string as NVARCHAR(MAX) in the DB, it's just a string now.
Dann einfach wiederherstellen (nachdem es von der DB zurückgeholt wurde) mit:
var certBytes = Convert.FromBase64String(stringOfCertWithPrivateKey);
var cert = new X509Certificate2(certBytes);
Verwendung von Export() ist besser als .RawData, da Sie den privaten Schlüssel beibehalten können oder nicht (mit .RawData wird es immer entfernt).
+0
Danke Jezpez, das war genau das, was ich brauchte. Sehr sauber! – Memetican
Verwandte Themen
- 1. Dateiinhalt in DB speichern
- 2. Speichern in DB (mvc)
- 3. Java BitSet in DB speichern
- 4. X509Certificate2 macht IIS Absturz
- 5. Speichern von DB-Verbindungszeichenfolgen
- 6. X509Certificate2: Erweiterungen fehlen
- 7. Wie erstellt man ein komplett neues x509Certificate2 in .net?
- 8. Konvertieren X509Certificate2-Zertifikat in BouncyCastle X509Certificate
- 9. Speichern bekannter und unbekannter Felder in db
- 10. Speichern von Zeit-Temperatur-Daten in DB
- 11. Schienen - Optionen in DB speichern (onChange)
- 12. Yii2 Rest erstellen - Speichern in DB
- 13. Textdatei in DB-Tabelle speichern mit oData
- 14. node.js multer Speichern von Dateinamen in db
- 15. DB-Verbindungen in Ressourcenvariablen im Frühjahr speichern
- 16. Google Places API: Orte in DB speichern
- 17. Schienen - Optionen speichern in DB (onchange)
- 18. Wie Facebook authentifizierten Benutzer in DB speichern?
- 19. X509Certificate2 von Speicher mit einem privaten Schlüssel
- 20. Speichern von Bildern: DB oder Dateisystem -
- 21. X509Certificate2.Verify() gibt immer false zurück
- 22. Django speichern automatisch generierten Formular aus DB
- 23. So speichern Sie die Ausgabetabelle im DB
- 24. Python keine Daten speichern sqlite db
- 25. Sicherung der JWT mit einem X509Certificate2 (JwtSecurityTokenHandler)
- 26. Speichern Blob auf DB mit Hibernate
- 27. So speichern Sie konstante Daten im DB
- 28. X509Certificate2 zu X509Certificate auf Windows Phone 8
- 29. PHP-Abfrage in DB speichern. Wann bekommen wir dann Lust?
- 30. Speichern statischer Konfigurations-/Lookup-Daten in der Rails-DB
also müssen Sie noch den .p12-Stream in ein Objekt lesen und dann richtig speichern? Ich kann nicht einfach die p12-Datei öffnen und deren Inhalt kopieren und in ein Varchar-Feld in eine Tabelle namens Cerficates werfen und danach nie wieder von einer physischen Datei lesen? vielleicht bin ich naiv – PositiveGuy
Ok, also RawData ist ein Byte-Array. Welchen MS SQL-Datentyp würden Sie verwenden, um ein Byte-Array zu speichern .... binary? – PositiveGuy
Ich möchte nur einmal lesen und muss diese .p12 Datei nicht auf dem Server speichern. Ich denke, das ist die Absicht. Unsere Führung sagt, dass wir es nicht aus einer Datei, sondern aus der Datenbank lesen sollen. Ich würde davon ausgehen, dass ich das einmal in der DB speichern und die Datei nie wieder lesen muss? – PositiveGuy