1

次のコードを使用して、プログラムでストアに証明書を追加しようとしています。

var certPath = string.Format("{0}//{1}", Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),"fileName.pfx");
        var cert = new X509Certificate2(certPath, "Password");

        X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
        store.Open(OpenFlags.ReadWrite);
        store.Add(cert);
        store.Close();

MMCにチェックインすると、証明書が追加されます。

管理者特権でコマンドプロンプトを実行すると、次のようになります。

netsh http add sslcert ipport=0.0.0.0:<port> certhash=<Thumbnail> appid={00000000-0000-0000-0000-000000000000}

次に、「指定されたログオンセッションは存在しません。すでに終了している可能性があります。」という1312エラーがスローされます。

MMCのインポート機能を使用して証明書を追加すると、上記のコマンドが機能します。

誰か助けてもらえますか?

4

2 に答える 2

3

問題は、Windowsが秘密鍵を保存する方法です。.Netでこれをプログラムで実行するには、次のコード行を変更します。

X509Certificate2 cert = new X509Certificate2(path, "password",
    X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);

この質問によると:ルートに(秘密鍵を使用して)証明書を挿入すると、LocalMachine証明書ストアが.NET4で失敗します

于 2016-04-26T00:06:12.240 に答える
0

結局、インストール時にWIXを使用して証明書をストアに挿入しました。それはうまく機能しているようでした。

于 2013-03-08T11:59:39.643 に答える