Ich Umwandlung Teil an verwalteten Code dieses Batch-Befehl:ein CERT Installieren Schlüssel mit einem privaten
"%~dp0\makecert" -r -pe -n "CN=CompanyName" -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 "%~dp0\server.cer"
Dies schafft nicht nur das CERT, aber es installiert auch sie.
Wenn das Zertifikat installiert ist, sieht wie folgt aus:
Jetzt auch ich versuche, die private cert zu erhalten bei der Installation von verwalteten Code verwenden.
Dies ist, was ich bisher:
/// <summary>
/// Install the root authority certificate
/// </summary>
/// <param name="fileName"></param>
private static void InstallRootAuthority(string fileName)
{
var cert = new X509Certificate2(X509Certificate.CreateFromCertFile(fileName));
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
}
Wie kann ich den privaten Schlüssel auch hinzufügen?
Ich bin mir ziemlich sicher, dass Ihr Code gültig ist. Sind Sie 100% sicher, dass das Zertifikat unter 'fileName' einen privaten Schlüssel enthält? Normalerweise, wenn eine Zertifikatsdatei einen privaten Schlüssel enthält, ist sie passwortgeschützt und ich sehe kein Passwort. – GuyMontag
Auch ein anderes Ding verstehe ich nicht ganz: Ihre Methode heißt 'InstallRootAuthority', aber Sie installieren es in' StoreName.My'. Üblicherweise gehören Wurzelzertifikate zu "StoreName".Root ", andernfalls werden Client-Zertifikate und Server-Zertifikate nicht automatisch verifiziert. Hast du das absichtlich gemacht? – GuyMontag