Есть ли хороший способ отладить проблемы с подключением по протоколу Self Hosted https? - PullRequest
0 голосов
/ 04 января 2019

Я работаю с автономным веб-сервисом стека служб на компьютере с Windows 10 и пытаюсь включить на нем протокол HTTPS.На данный момент я сделал следующее:

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

2) Я установил сертификат нахранилище сертификатов "LocalMachine / Personal" моих машин.

3) Я выполнил следующие команды из командной строки:

netsh http add sslcert ipport=0.0.0.0:{DefaultConfig.DefaultSslPort} certhash={sha1} appid={{{appId}}}
netsh http add urlacl url=https://+:{DefaultConfig.DefaultSslPort}/ user=everyone

4) Я добавил следующее в свою Программу.cs

var listeningOn = $"http://*:{DefaultConfig.DefaultPort}/";
appHost.Start(new[]{ listeningOn, $"https://*:{DefaultConfig.DefaultSslPort}/" });

Теперь, когда я запускаю проект, привязка http работает без проблем, веб-служба загружается и работает как положено.Однако, когда я пробую привязку https, браузер показывает, что соединение установлено, и сертификат действителен (появляется зеленая блокировка, и сетевой трафик показывает, что соединение установлено успешно), однако сервер отвечает:

HTTP Error 503. The service is unavailable.

Ясно, что этодоступно (как доказывает привязка Http), но между окнами и пакетом служб есть некоторое разобщение, и я не знаю, где искать ответы на этот вопрос.Я перепробовал несколько поисковых фраз, но все они, кажется, говорят мне, чтобы проверить / сделать то, что я уже проверил / сделал, или результаты специфичны для конкретного приложения / фреймворка / ОС и не помогли.

1 Ответ

0 голосов
/ 11 января 2019

Хорошо, поэтому в противовес МНОГОМ, МНОГОМУ сообщениям, вы должны НЕ зарезервировать URL, используя:

netsh http add urlacl url=https://+:{DefaultConfig.DefaultSslPort}/ user=everyone

При самостоятельном размещении с помощью ServiceStack.Я не знаю, почему (если вы знаете, почему, не стесняйтесь оставлять комментарии), но это делает окна неспособными передать запрос https на ваш собственный сайт.Я проверил это, загрузив исходный код ServiceStack и установив точку останова для обратного вызова соединения, которая является точкой входа для любых входящих соединений.Точка останова никогда не срабатывает, поэтому запрос никогда не попадает в Servicestack.

Как только я удалил резервирование URL, все работало нормально.

...