Не ўдаецца зарэгістраваць C # генеравацца selfsigned сертыфікат SSL з Netsh (памылка 1312)

Я стварыў самозаверяющий сертыфікат SSL праз C# (BouncyCastle). Гэта выяўляецца ў лакальным кампутары/персанальным сховішча і выглядае сапраўды гэтак жа, як ужо існуючы сертыфікат LOCALHOST ад Microsoft. Калі я пакажу ўласцівасць, ён кажа:

<�Р> SSL сертыфікат дадаць не атрымалася, памылка: 1312 Указаны сеанс ўваходу робіць   не існуе. Гэта, магчыма, ужо былі спыненыя.

Аднак, калі я хачу, каб зарэгістраваць гэты сертыфікат з дапамогай Netsh, я атрымліваю паведамленне пра памылку:

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

прыкладанне-ідэнтыфікатар з'яўляецца GUID паказаны ў AssemblyInfo.cs. <�Код> certhash з'яўляецца хэш ад уласцівасцяў-старонцы сертыфіката.

Я знайшоў некалькі прычын, чаму гэта можа адбыцца ў шматлікіх блогах:

  • Выкарыстоўвайце павышаныя прывілеі (я гэта раблю)
  • Пераканайцеся, што сертыфікат зарэгістраваны ў «лакальным кампутары», а не ў «бягучага карыстальніка» - У мяне ёсць гэта
  • .
  • Пераканайцеся, што сертыфікат змяшчае закрыты ключ (гэта значыць, як гэта паказана ў Dialoge акне уласцівасцяў).

Ні адзін з іх не прывёў да поспеху ...

2
Гэтаксама! Што цікава, той жа код працуе добра на некаторых машынах. А на іншых мы атрымліваем вышэй памылкі. Магчыма, у вас ёсць шанец, каб выправіць гэта? (Я выкарыстоўваю Windows 8)
дададзена аўтар Mike, крыніца

8 адказы

Ваша праблема да звязвання. Я мяркую, што сертыфікат не правільна імпартаваны. Пры загрузцы сертыфіката ў 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();
4
дададзена
паказаўшы keyStorageFlags тое, што ўсталяваў яе для мяне. Ён працаваў у адваротным выпадку на Windows 7, але не працуе без іх на Windows 8.
дададзена аўтар brendonparker, крыніца
<�Код> Exportable сьцяг не павінен ставіцца да гэтага пытання і можа быць непажаданым.
дададзена аўтар Simon Opelt, крыніца

Ваша праблема да звязвання. Я мяркую, што сертыфікат не правільна імпартаваны. Пры загрузцы сертыфіката ў 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();
4
дададзена
паказаўшы keyStorageFlags тое, што ўсталяваў яе для мяне. Ён працаваў у адваротным выпадку на Windows 7, але не працуе без іх на Windows 8.
дададзена аўтар brendonparker, крыніца
<�Код> Exportable сьцяг не павінен ставіцца да гэтага пытання і можа быць непажаданым.
дададзена аўтар Simon Opelt, крыніца

Ваша праблема да звязвання. Я мяркую, што сертыфікат не правільна імпартаваны. Пры загрузцы сертыфіката ў 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();
4
дададзена
паказаўшы keyStorageFlags тое, што ўсталяваў яе для мяне. Ён працаваў у адваротным выпадку на Windows 7, але не працуе без іх на Windows 8.
дададзена аўтар brendonparker, крыніца
<�Код> Exportable сьцяг не павінен ставіцца да гэтага пытання і можа быць непажаданым.
дададзена аўтар Simon Opelt, крыніца

У мяне была аналагічная праблема сёння, і гэта, як я ўсталяваў яго. Калі я назіраў за сертыфікаты, устаноўленыя на лакальным кампутары/маім у mmc.exe, я бачыў, што мой сертыфікат не значок з ключом.

Я сумяшчаю * .cer і * .pvk файл * .pfx з:

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

А затым імпартаваць файл * .pfx з mmc.exe.

Тады наступныя каманды будуць выконвацца без памылак:

netsh http add sslcert...
netsh http delete sslcert...
1
дададзена

У мяне была аналагічная праблема сёння, і гэта, як я ўсталяваў яго. Калі я назіраў за сертыфікаты, устаноўленыя на лакальным кампутары/маім у mmc.exe, я бачыў, што мой сертыфікат не значок з ключом.

Я сумяшчаю * .cer і * .pvk файл * .pfx з:

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

А затым імпартаваць файл * .pfx з mmc.exe.

Тады наступныя каманды будуць выконвацца без памылак:

netsh http add sslcert...
netsh http delete sslcert...
1
дададзена

У мяне была аналагічная праблема сёння, і гэта, як я ўсталяваў яго. Калі я назіраў за сертыфікаты, устаноўленыя на лакальным кампутары/маім у mmc.exe, я бачыў, што мой сертыфікат не значок з ключом.

Я сумяшчаю * .cer і * .pvk файл * .pfx з:

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

А затым імпартаваць файл * .pfx з mmc.exe.

Тады наступныя каманды будуць выконвацца без памылак:

netsh http add sslcert...
netsh http delete sslcert...
1
дададзена

One additional check you have to make is: Is your certificate located under the "Personal" store under "Local Computer"? If not you will have to use the additional argument certstorename=""

Where I determined the value to pass as in the following way:

  1. Open MMC and add the Certificates snap-in for the Local Computer account.
  2. is the name of the folder in which your certificate is located when you view it through this snap in.

Па змаўчанні прынята значэнне для certstorename з'яўляецца «MY», які пазначае тэчку «Асабістыя». Так што калі вы сертыфікат ў асабістых тэчках, то вам не трэба будзе дадаць гэты параметр.

0
дададзена

One additional check you have to make is: Is your certificate located under the "Personal" store under "Local Computer"? If not you will have to use the additional argument certstorename=""

Where I determined the value to pass as in the following way:

  1. Open MMC and add the Certificates snap-in for the Local Computer account.
  2. is the name of the folder in which your certificate is located when you view it through this snap in.

Па змаўчанні прынята значэнне для certstorename з'яўляецца «MY», які пазначае тэчку «Асабістыя». Так што калі вы сертыфікат ў асабістых тэчках, то вам не трэба будзе дадаць гэты параметр.

0
дададзена