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

"Неверный параметр." Ошибка при использовании netsh http add sslcert

Следуя инструкциям в разделе "Как настроить порт с сертификатом SSL" в этой ссылке: http://msdn.microsoft.com/en-us/library/ms733791.aspx, я ввел эту команду на командной строке (duh):

> netsh http add sslcert ipport:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid={EDE3C891-306C-40fe-BAD4-895B236A1CC8}
The parameter is incorrect.

Отпечаток My certhash был взят из сертификата в папке Сертификаты (Локальный компьютер) > Личные > Сертификаты.

Создан GUID appid.

Что еще не так, что мне нужно исправить, чтобы заставить это работать?

4b9b3361

Ответ 1

В PowerShell просто введите следующее. сначала войдите в netsh http mode, а затем добавьте sslcert. Это сработало для меня.

>netsh

netsh>http

netsh http>add sslcert ipport=0.0.0.0:13286 appid='{a5455c78-6489-4e13-b395-47fbdee0e7e6}' certhash=<thumprint without space>

Ответ 2

Другой возможной причиной этой проблемы являются скрытые символы, скопированные с страницы диспетчера сертификатов. Если вы скопируете отпечаток из окна сведений в сертификатах, вначале проверьте скрытый символ (используйте клавиши со стрелками!). Это послужило причиной появления сообщения об ошибке "Параметр неверно".

Ответ 3

Сценарии командной строки PowerShell и скрипты PowerShell в файлах ps1 будут думать, что скобки-скобки {...} являются директивами PowerShell. Так что цитируйте их. В противном случае, как вы видели, PowerShell будет запутан.

Итак, вместо этого (который вы нашли не удалось):

netsh http add sslcert ipp ort:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid= {EDE3C891-306C-40fe-BAD4-895B236A1CC8} 

Сделайте это (обратите внимание на одиночные кавычки):

netsh http add sslcert ipp ort:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid= '{EDE3C891-306C-40fe-BAD4-895B236A1CC8}'

Ниже приведена информация о синтаксисе PowerShell с фигурными скобками:

http://danv74.wordpress.com/2012/07/12/powershell-and-the-hidden-art-of-curly-braces-and-other-braces/

Ответ 4

Посмотрев на синтаксис команды netsh, я увидел этот пример:

add sslcert ipport=1.1.1.1:443 certhash=0102030405060708090A0B0C0D0E0F1011121314 appid={00112233-4455-6677-8899-AABBCCDDEEFF}

По внешнему виду, ваша проблема в том, что вы делаете

ipport:10.141.146.227:7001
      ^

в отличие от

ipport=10.141.146.227:7001
      ^

Ответ 5

  • Скопировать команду в блокнот
  • Сохранить как ANSI
  • Закрыть и снова открыть файл
  • Удалить фикцию? символы
  • Скопируйте из блокнота в командную строку и запустите команду

Ответ 6

Копирование отпечатка сертификата из сертификата \Details\Thumbprint добавит значение отпечатка с байтами "3f38", которые при преобразовании в ANSI будут показаны как "?". Это скрытое значение вызвало проблему для меня.

Я вставил значение в блокнот ++, выбрал 'Encoding' > 'Convert to ANSI', затем вручную удалил добавленный '?' персонажи. Тогда у меня было бы чистое значение отпечатка.

Ответ 7

В моем случае проблема в том, что я следую инструкциям microsoft, я скопировал отпечаток из окна SSL. дело в том, что при этом копируется непечатаемый символ в начале хэша.

Попробуйте вставить отпечаток в блокнот, а затем дважды нажмите home и pres delete (до тех пор, пока первый char из отпечатка не будет удален) и повторно добавьте char. Вы можете увидеть char, если вы скопируете отпечаток и вставьте его в cmd:

thumbprint with "?"

Ответ 8

Я получал эту ошибку, когда я только начинал работу с http.sys. После того, как я побежал:

netsh http add iplisten ipaddress=0.0.0.0

тогда команды netsh http add sslcert начали вести себя правильно.

Ответ 9

Я столкнулся с этим вопросом, ища решение проблемы. Наконец я нашел тот, который работал у меня.

Мой параметр certhash не был полностью 20 байтов. Мне пришлось проложить его нулями впереди, чтобы заставить его работать.

Итак, вместо

certhash=112233445566778899aabbccddeeff00, я должен был сделать это:

certhash=00000000112233445566778899aabbccddeeff00.

Надеюсь, что это поможет.

Ответ 10

Сэр, у вас есть ipport: вместо ipport =, что легко сделать, поскольку вы следуете за ним с помощью ip: port

Кроме того, следите за {versus < или (, который также получил меня в прошлом.

Ответ 11

Использование Серийного номера вместо Thumbprint для параметра certhash вызовет эту ошибку из-за разницы в количестве символов. Заполнение с помощью 0s изменит ошибку до того, как добавится сертификат SSL, Ошибка: 1312

Ответ 12

Остерегайтесь, если у вас есть DNS-имя в качестве привязки, используйте hostnameport вместо ipport

netsh http delete sslcert hostnameport=domainame.com:443

Мне пришлось удалить привязки ADFS Proxy для Office 365 Single-Sign On.

Ответ 13

было несколько вещей, которые я сделал, и я думал, что он работал после получения того же параметра. "Параметр неверен". Ошибка.

1) перезапустил машину и сделал это снова. он работал в первый раз. 2) удостоверился, что я был в c:\и снова поставил команду после перезапуска.

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

3) я просмотрел отпечаток своего CA (а не выданный серверный сертификат) и скопировал его снова с MMC, и он сработал.

После этого я снова удалил его (netsh http delete sslcert ipport = 0.0.0.0:) и повторил процесс, используя отпечаток сертификата сервера. Заклятая вещь снова работала.

Я не знаю, просто попробуй пройти то же самое, что и я. возможно, один из них будет работать. В конце концов, я подозреваю, что я ввел фиктивное пространство или символ в certhash.

Ответ 14

Это будет работать из компиляции PowerShell:

$AppId = [Guid]::NewGuid().Guid
$Hash = "209966E2BEDA57E3DB74FD4B1E7266F43EB7B56D"

netsh http add sslcert hostname=localhost:8088 certhash=$Hash appid=`{$AppId`} certstorename my

Важными деталями являются удаление каждого {} с помощью backtick (`) и не опускание certstorename. В противном случае netsh вызывает ошибку 87.

Переменные предназначены только для удобства.

Ответ 15

"-" НЕ НУЖНЫ. Если ваш guid не выглядит точно так, вы получите неправильную ошибку параметра: {EDE3C891-306C-40fe-BAD4-895B236A1CC8} против EDE3C891306C40feBAD4895B236A1CC8 → WRONG {EDE3C891306C40feBAD4895B236A1CC8} → НЕПРАВИЛЬНО

Также Im использует руководство для приложения IIS, а не случайное.

Ответ 16

Я должен был закончить связь между VS и IIS Express, удалив сертификат localhost. Я действительно застрял. Приложение не запустится, и ничего, что я мог бы сделать, похоже, исправил это отключение (которое, как мне хотелось, привело меня к этой теме).

Наконец-то я смог решить проблему, изменив назначенный порт на URL-адрес без SSL (launchSettings.json в приложениях .NET Core) и отключив флажок Включить SSL в настройках проекта и начать новый старт. Затем я смог добавить свой новый сертификат с помощью этой команды: netsh http add sslcert ipport=0.0.0.0:44392 appid={214124cd-d05b-4309-9af9-9caa44b2b74b} certhash=A0ADC1A1002F288CCFA96261F9F352D28C675A90.

Также обратите внимание, что переменная appid не является отражением вашего App проекта VS (или, по крайней мере, это не обязательно). Это просто произвольный GUID, согласно Scott Hanselmann:

AppId не имеет большого значения, его просто GUID. Это говорит HTTP.SYS, что мы используем этот сертификат.

Это не было очевидно для меня, и проблема с параметром была неправильной ошибкой, которая намного более неясна.

Если у вас возникли подобные проблемы, удачи. Я верю в тебя. Пинг меня, если ты чувствуешь себя потерянным и одиноким. Может быть, я могу вспомнить кое-что к тому времени!: D

Ответ 17

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

Вот несколько причин:

1- Копирование и вставка сертификата с отпечатком сертификата из окна добавляет скрытый символ в ваш хеш. Он не отображается в текстовых редакторах, но вам нужно удалить символ, чтобы он работал.

2- Отпечаток SSL должен быть доступен в Личном → Сертификаты для работы с localhost.

3-Он должен быть 'ipport =' not 'ipport:'

4- Сертификат SSL должен иметь закрытый ключ. Если вы используете консоль управления сертификатами, убедитесь, что в представлении сертификата есть значок ключа.

5- GUID должен быть определен в полном формате: {a10b0420-a21f-45de-a1f8-818b5001145a}, и он должен иметь одну цитату в powershell: '{a10b0420-a21f-45de-a1f8-818b5001145a}' Таким образом, PowerShell формат отличается от командной строки.

6 - SSL Cert должен иметь полные символы со всеми пробелами '0 и без пробела. Вы можете скопировать отпечаток (будьте осторожны, чтобы удалить специальный скрытый символ) и удалить пробелы или использовать "netsh http show sslcert", чтобы получить значение, если сертификат уже зарегистрирован для другого адреса.

Что сработало для меня:

Вот точная команда, которая работала для меня в powershell:

netsh http add sslcert ipport=0.0.0.0:20001 certhash=5304c034548b27c72b5e9c14f0c7bdd13e52d760 appid='{a10b0420-a21f-45de-a1f8-818b5001145a}'

И вот инструкция командной строки:

netsh
http add sslcert ipport=0.0.0.0:20001 certhash=5304c034548b27c72b5e9c14f0c7bdd13e52d760 appid={a10b0420-a21f-45de-a1f8-818b5001145a}

Дополнительные команды, которые помогут избежать проблем:

Используйте следующую команду для просмотра текущего зарегистрированного сертификата. Вы можете найти и повторно использовать certhash или ваше приложение оттуда:

netsh http show sslcert

Если сертификат уже зарегистрирован с аналогичным ip и портом, его необходимо удалить. Я обнаружил, что это вызывает проблемы с localhost, 127.0.0.1 и 0.0.0.0. Вы должны иметь только 0.0.0.0, зарегистрированные в тестовой среде. Используйте следующую команду для удаления возможных поврежденных сертификатов:

netsh http delete sslcert ipport=0.0.0.0:20001

Ответ 18

Может быть полезно добавить мое разрешение в этот поток:

Я пытался добавить ippport с параметром hostnameport, поэтому я получил эту ошибку параметра.

netsh http add sslcert hostnameport="10.0.0.120:443"

Вместо:

netsh http add sslcert ipport="10.0.0.120:443"

Cya!