nicht unterstützt. Ich versuche, ein selbstsigniertes Zertifikat zu erstellen (programmgesteuert) in einer C# -Assembly (Targeting .NET 4.0
), um als eine Stammzertifizierungsstelle zu dienen, andere Zertifikate zu generieren. Das Zertifikat muss nicht im Windows-Zertifikatspeicher gespeichert werden, ich werde es als Datei exportieren.Die angeforderte Operation wird in CngKey.Create
Durchlesen this question (und insbesondere @dthorpe's answer), entschied ich mich, CLR Security zu versuchen.
Die CLR Security
Bibliothek stellen eine Erweiterungsmethode auf CngKey class ein selbst signiertes Zertifikat zu generieren, aber ich konnte in eine Instanz von CngKey
mit nicht gelingen:
var key = CngKey.Create(CngAlgorithm.Sha1); //same with Sha256, Sha512 and MD5
//or
var key = CngKey.Create(CngAlgorithm.Sha1, null, new CngKeyCreationParameters()
{
ExportPolicy = CngExportPolicies.AllowExport,
KeyUsage = CngKeyUsages.AllUsages,
KeyCreationOptions = CngKeyCreationOptions.MachineKey,
});
Jede dieser Linien wirft die Ausnahme:
System.Security.Cryptography.CryptographicException unhandled war
HResult = -2146893783
Message = Die angeforderte Operation wird nicht unterstützt.
Source=System.Core
StackTrace:
at System.Security.Cryptography.NCryptNative.CreatePersistedKey(SafeNCryptProviderHandle provider, String algorithm, String name, CngKeyCreationOptions options)
at System.Security.Cryptography.CngKey.Create(CngAlgorithm algorithm, String keyName, CngKeyCreationParameters creationParameters)
at System.Security.Cryptography.CngKey.Create(CngAlgorithm algorithm)
at Tests.Program.Main(String[] args) at Program.cs:line 51
Suche durch SO und das Internet, habe ich folgendes geprüft:
- Ich bin mit einem Windows 7-Box (so unterstützt es RPC gemäß MSDN)
- Versuchte in einem Windows Server 2012-Feld, der gleiche Fehler
- Der Prozess läuft als admin (so dass es Zugriff auf alle Cert-Speicher haben, sowieso)
- Th Die Dienste
CNG Key Isolation
undRemote Procedure Call (RPC)
werden ausgeführt
Jede Hilfe wäre willkommen.
Das war in der Tat mein Problem. Vielen Dank. Auf der Seite der von Ihnen verknüpften CNG-Schlüsselspeicheranbieter heißt es: "Microsoft installiert die folgenden KSPs, beginnend mit Windows Vista und Windows Server 2008. Anbieter können andere Anbieter erstellen und installieren." – Dinei