Подтвердить что ты не робот

Использование netsh, привязка SSL-сертификата к номеру порта сбой

Я выполнил инструкции в SSL с помощью Self Hosted WCF Service. Когда я пытаюсь связать сертификат в 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.
4b9b3361

Ответ 1

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

Вторая команда makecert также устанавливает созданные сертификаты в "Сертификаты (локальный компьютер) → Личные → Сертификаты node". Необходимо снова обновить текущую открытую 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

Ответ 2

Я боролся с этим навсегда, чтобы заставить IIS Express правильно выполнять SSL. Оказывается, мой сертификат находился в хранилище доверенных корневых центров сертификации вместо хранилища личных сертификатов. Это то, что сработало для меня:

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

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

Ответ 6

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

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

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

Ответ 7

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

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

Используйте это вместо (с добавлением в одной цитате '{}'):

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

Ответ 8

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

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

Ответ 9

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

certstorename=Root

команде netsh.

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