3

C# (bouncycastle) で自己署名 SSL 証明書を作成しました。ローカル コンピューター/パーソナル ストアに表示され、Microsoft からの既存の localhost 証明書とまったく同じように見えます。プロパティを表示すると、次のように表示されます。

SSL 証明書の追加に失敗しました。エラー: 1312 指定されたログオン セッションが存在しません。すでに終了している可能性があります。

ただし、この証明書を netsh 経由で登録しようとすると、次のエラーが表示されます。

netsh.exe http add sslcert ipport=0.0.0.0:{0} certhash={1} appid={2}

app-id は、assemblyinfo.cs で指定された GUID です。certhash証明書のプロパティ ページからのハッシュです。

多くのブログ投稿で、これが発生する理由をいくつか見つけました。

  • 昇格された特権を使用します(私はこれを行っています)
  • 証明書が「現在のユーザー」ではなく「ローカルコンピューター」に登録されていることを確認してください-私はこれを持っています。
  • 証明書に秘密鍵があることを確認します (プロパティ ダイアログ ボックスに表示されるように、秘密鍵があります)。

どれも成功には至りませんでした...

4

3 に答える 3

4

あなたの問題はバインディングの前にあります。証明書が正しくインポートされていないと思います。C# で証明書を読み込む場合は、次を使用します。

var cert = new X509Certificate2("Path", "Pwd, X509KeyStorageFlags.MachineKeySet
                                              | X509KeyStorageFlags.PersistKeySet
                                              | X509KeyStorageFlags.Exportable);

そして、必ずローカル マシンに保存してくださいStoreLocation.LocalMachine

var store = new X509Store(storeName, StoreLocation.LocalMachine);
store.Open(OpenFlags.MaxAllowed);
store.Add(cert);
store.Close();
于 2014-06-10T10:42:51.203 に答える
0

今日も同様の問題がありましたが、これが修正方法です。mmc.exe でローカル コンピューター/my にインストールされている証明書を確認したところ、証明書にキーのアイコンがないことがわかりました。

*.cer と *.pvk ファイルを *.pfx に結合します。

pvk2pfx -pvk "private_key.pvk"  -spc "public.cert" -pfx "test.pfx"

次に、mmc.exe で *.pfx ファイルをインポートします。

その後、次のコマンドはエラーなしで実行されます。

netsh http add sslcert...
netsh http delete sslcert...
于 2014-01-12T13:17:47.810 に答える
-1

確認する必要がある追加のチェック事項は次のとおりです。証明書は、「ローカル コンピューター」の下の「個人用」ストアにありますか? そうでない場合は、追加の引数を使用する必要がありますcertstorename="<store>"

次のように渡す値を決定した場所<store>

  1. MMC を開き、ローカル コンピューター アカウントの証明書スナップインを追加します。
  2. <store>は、このスナップインで証明書を表示したときに、証明書が配置されているフォルダーの名前です。

デフォルトでは、certstorename に想定される値は「MY」であり、これは「個人用」フォルダーを示します。したがって、証明書が Personal フォルダーにある場合は、このパラメーターを追加する必要はありません。

于 2013-07-10T18:26:51.783 に答える