"Неверный параметр." Ошибка при использовании 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
.
Что еще не так, что мне нужно исправить, чтобы заставить это работать?
Ответы
Ответ 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!