С помощью netsh, привязать сертификат SSL на порт не

я следовал инструкциям в SSL с собственной размещенной службой WCF. Когда я пытаюсь связать сертификат в Windows 7 с помощью netsh, как описано в как настроить порт с SSL-сертификатом., это не так.

В Windows PowerShell

PS C:> netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Bad numeric constant: 224.
At line:1 char:104
+ netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={001 <<<< 12233-4455-6677-8899-AABBCCDDEEFF}
+ CategoryInfo          : ParserError: (224:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : BadNumericConstant

в командной строке

C:>netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}

SSL Certificate add failed, Error: 1312
A specified logon session does not exist. It may already have been terminated.

9 ответов


Я боролся с этим навсегда, чтобы заставить мой IIS Express делать SSL правильно. Оказывается, мой сертификат был в Доверенные Корневые Центры Сертификации магазин вместо Личные Сертификаты магазине. Вот что сработало для меня:

  1. убедитесь, что ваш сертификат находится в "сертификаты (локальный компьютер) / личные / сертификаты"
  2. netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid='{00112233-4455-6677-8899-AABBCCDDEEFF}'
  3. SSL-сертификат успешно добавлен
  4. используйте MMC и перетащите сертификат везде, где вы хотите его пойти.

Я нашел 4 возможные причины ошибки 1312 в моих привязках портов:

  • сертификат SSL поврежден - вам нужно удалить из хранилища сертификатов и повторно добавить.
  • сертификат SSL не имеет закрытого ключа - вам нужно удалить из хранилища сертификатов и повторно добавить полный открытый / закрытый сертификат или иным образом прикрепить закрытый ключ к сертификату.
  • при установке на pre-SP1 версии 2012R2, вам может понадобиться KB 981506.
  • возможно, вы добавили сертификат SSL в хранилище пользователей, а не хранилище сертификатов локального компьютера - удалить из хранилища пользователей и добавить в хранилище компьютеров.

источником ошибки является то, что я взял отпечаток пальца непосредственно из файла сертификата signroot.сертификат, который создается из первой команды makecert, необходимой для создания "доверенных корневых центров сертификации", который снова используется для создания(и установки) доверенного сертификата self-sigend во второй команде makecert.

вторая команда makecert также устанавливает созданные сертификаты в "сертификаты (локальный компьютер) -> личные - > Узел сертификаты."Нужно обновить в настоящее время открыть MMC снова, чтобы увидеть сертификат "localhost" и отпечаток пальца должны быть взяты из этих сертификатов, но не из signroot.сертификат.

Если это все еще не так, может потребоваться установить это исправление из M$. http://support.microsoft.com/kb/981506

ref : http://social.technet.microsoft.com/Forums/en/winservergen/thread/68452008-a89b-40ba-9927-472efcfafc99


мы столкнулись с той же ошибкой, и после долгих часов мы поняли, что netsh не просматривал все локальные хранилища машин, чтобы найти сертификат, идентифицированный параметром "certhash". По умолчанию, он ищет сертификат в "личном" магазине и только там.

поскольку наш сертификат находился не в" личном "хранилище, а в хранилище "Доверенные корневые центры сертификации", проблема была решена путем добавления параметра" certstorename " в команду netsh:

C:\>netsh http add sslcert ipport=0.0.0.0:8732 certstorename=AuthRoot certhash=...  

еще одна вещь, о которой нужно знать, - это копирование/вставка хэша сертификата из окна свойств сертификата консоли MMC, также может привести к смешному символу в начале хэша. Вы не увидите его, потому что этот символ невидим в кодировке UTF-8, которую, вероятно, использует ваш текстовый редактор!

Netsh не помогает, поскольку он просто продолжает терпеть неудачу с "неверным параметром", не раскрывая, какой параметр;)

изменение кодировки на ANSI показывает символ, удаляет его и он будет работать как шарм


ключ для меня был в канаве, используя IE, чтобы сделать импорт, который я обычно делаю / делал.

используйте mmc.exe, File - >добавить / удалить оснастку и добавить "сертификаты". Управление учетной записью компьютера, а затем "локальный компьютер".

импортировать корневой сертификат в сертификаты (локальный компьютер)/Доверенные корневые центры сертификации/сертификаты.

импортируйте сертификат клиента в Personal / Certificates, а затем выполните netsh http add sslcert.


Я заметил следующее в вашем вопросе. Это может не решить исходную проблему, но синтаксис здесь неправильный.

PS C:\> netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Bad numeric constant: 224.
At line:1 char:104
+ netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={001 <<<< 12233-4455-6677-8899-AABBCCDDEEFF}
+ CategoryInfo          : ParserError: (224:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : BadNumericConstant

вместо этого используйте это (с appid в одной кавычке' {}'):

netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid='{00112233-4455-6677-8899-AABBCCDDEEFF}'

на самом деле это не имеет ничего общего с обновлением. Я потратил столько времени на одну и ту же проблему. Если вы сделаете новую установку, вы не столкнетесь с этой проблемой, но проблема возникнет, если вы попытаетесь:

 1. Import same certificate again
 2. You create a new certificate and try to bind it which has same parameters, namely the CN value.

чтобы избавиться от этой проблемы, удалите этот сертификат правильно из хранилища сертификатов и кэша сервера IIS или (только для целей разработки) создайте новый сертификат, но с другим значением CN команда будет работать.


"официальный" (не самозаверяющие) сертификаты (например, из Thawte) импортируются в хранилище сертификатов: "Доверенные корневые центры сертификации".
Если в команде netsh не передается параметр "certstorename=", netsh принимает" MY", представляющий" Частное " хранилище.
Для привязки официального сертификата необходимо добавить:

certstorename=Root

команде netsh.

полная информация