2009-02-12 14 views
4

Я создал собственный хостинг-сервер, используя wsHttpBinding. Я запускаю сервер Windows R2 R2 SP2.netstat говорит, что 443 открыт, но я не могу подключиться к нему с помощью telnet .. почему?

Если я настроил его для прослушивания на http://localhost:443/MyService, все будет хорошо. Я могу подключиться к http://localhost:443/MyService с Internet Explorer и получить стандартное сообщение «Bad Request»

Теперь, если я попытаюсь перейти на HTTPS, я наблюдаю странное явление.

Вот что я сделал:

  1. Я изменил свой конфигурационный файл ФОС с http://localhost в https://localhost и от Security=None до Security=Transport (как описано в многочисленных ФОС учебники)
  2. Я зарегистрировался мой HTTP порт, как это:

    httpcfg delete ssl -i 0.0.0.0:443 
    
    httpcfg set ssl -i 0.0.0.0:443 -h ea2e450ef9d4... 
    

Обратите внимание, что сертификат, который я использовал, является «реальным сертификатом» (т. выпущенный доверенным ЦС, а именно Comodo). Сервер отвечает на ping в NS, указанном в сертификате.

Теперь следующий таймаут:

Microsoft Telnet> open localhost 443 

Вот выход из netstat (ФИД '4' является процесс 'система'):

netstat -nao 

    Proto Local Adress   Remote Adress   State   Pid 
    TCP 0.0.0.0:443   0.0.0.0:0    Listening  4 

А вот скриншот от TCPView когда я выпустил команду open в telnet:

alt text http://img26.imageshack.us/img26/3376/tcpview2si6.jpg

Я немного озадачен. Для меня, если netstat говорит, что сервер прослушивает 443, подключение telnet к 443 не должно быть тайм-аутом, и у меня должно быть хотя бы пустое приглашение, ожидающее, что я наберу какой-то зашифрованный материал :)

До сих пор я ' ве пытался:

  1. повторяйте все шаги с нуля следующие именно учебник MSDN
  2. используется порт 10443 вместо 443
  3. Отключение брандмауэра
  4. использовать собственный сертификат

Я не знаю, что попробовать дальше .. любые идеи?

ответ

2

Клиент telnet не собирается отправлять правильно сконструированный запрос для инициирования рукопожатия https, поэтому я предполагаю, что защищенный сервер ssl просто ждет большего количества данных.

Клиент telnet, разумеется, не будет знать, что делать с ответом от защищенного сервера ssl (он, конечно же, не будет запрашивать данные для отправки). Связь может произойти только после завершения рукопожатия https.

Вам необходимо использовать клиента, который знает, как выполнить рукопожатие. The openssl binary can do this out of the box.

1

Telnet нельзя использовать, чтобы познакомиться с encrited webs.

Оформить заказ microsfot примечание. Он говорит: "ПРИМЕЧАНИЕ. В этом примере предполагается, что веб-сервер настроен на использование HTTP-порта по умолчанию (TCP 80). Если веб-сервер прослушивает другой порт, замените этот номер порта в первой строке примера. , этот пример не работает должным образом по HTTPS/SSL-соединению (по умолчанию TCP 443), поскольку клиент telnet не может согласовать необходимые команды шифрования для установления сеанса SSL.Хотя первоначальное подключение возможно через порт HTTPS/SSL, данные не возвращаются при выдаче запроса GET «

Update:. Checkout этой другой ноте HOW TO: Determine If SSL Connectivity Is Not Working on the Web Server or on an Intermediate Device

+0

Да, это то, что я сказал, я должен по крайней мере, получить «начальное соединение» вместо тайм-аут .. Btw, IE тоже не работает ... – Brann

+0

Я только что пробовал работать на https-сервере. Вы правы, это не сработает. – Brann

+0

Кстати, ссылка, которую вы только что опубликовали, не помогает: я не использую IIS (моя служба сама размещена), и эта стратегия, похоже, концентрируется на проблемах подключения (у меня нет, так как я прямо на сервер) – Brann

1

Как сказал FerrariB, телнет не выполните переговоры, необходимые для открытия SSL-соединения. Telnet ничего не знает о сертификатах или шифровании. Таким образом, вы гарантированно не сможете связываться с HTTPS-портом 443 через telnet. Вам нужно будет найти другой способ сделать все, что вы пытаетесь

Проверьте, пожалуйста, на странице Википедии: TLS, например, где он говорит прямо:

Если какой-либо один из вышеуказанных шагов не удается, TLS рукопожатие терпит неудачу, и соединение не создается.

Это именно то, что вы видите, пытаясь использовать telnet для связи с конечной точкой SSL.

0
  1. в командной строке: netstat -nao |find "443" последние столбцы показывают номер: pic no.1

  2. Теперь откройте задачу результат manager.find число в 1-ой секции в Pid колонке (если PID не был включен, выберите его на вкладке «Вид») название программы показывает программу, которая использует порт.

  3. отключить программу, которая использует порт/в моем случае я остановил его от услуг