С помощью netsh привязать сертификат SSL к номеру порта не удается - PullRequest
33 голосов
/ 10 марта 2012

Я следовал инструкциям в 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 ]

29 голосов
/ 22 августа 2013

Я боролся с этим навсегда, чтобы заставить мой IIS Express правильно выполнять SSL. Оказывается, мой сертификат находился в хранилище Trusted Root Certification Authorities вместо хранилища Personal Certificates . Вот что у меня сработало:

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

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

  • Сертификат SSL поврежден - необходимо удалить его из хранилища сертификатов и повторно добавить.
  • В сертификате SSL отсутствует закрытый ключ - вам необходимо удалить его из хранилища сертификатов и повторно добавить полный открытый / закрытый сертификат, либо прикрепить закрытый ключ к сертификату другим способом.
  • При установке на версию 2012R2, предшествующую SP1, вам может потребоваться 981506 КБ.
  • Возможно, вы добавили сертификат SSL в хранилище пользователей, а не хранилище сертификатов локального компьютера - удалите из хранилища пользователей и добавьте в хранилище компьютеров.
12 голосов
/ 10 марта 2012

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

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

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

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

7 голосов
/ 12 августа 2015

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

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

C:\>netsh http add sslcert ipport=0.0.0.0:8732 certstorename=AuthRoot certhash=...  
3 голосов
/ 19 февраля 2017

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

Netsh не помогает, так как он просто терпит неудачу с «параметр неверен», не раскрывая, какой параметр;)

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

2 голосов
/ 05 апреля 2016

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

Используйте mmc.exe, File-> Add / Remove Snap-in и добавьте «Certificates»,Управление для учетной записи компьютера, а затем «Локальный компьютер».

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

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

1 голос
/ 17 августа 2012

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

 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 команда будет работать.

1 голос
/ 05 апреля 2012

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

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}'
0 голосов
/ 18 января 2017

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

certstorename=Root

команде netsh.

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

...