2009-02-12 61 views
4

我已經使用wsHttpBinding構建了一個自託管的wcf服務器。我正在運行Win 2003服務器R2 SP2。netstat表示443已打開,但無法通過telnet連接到它。爲什麼?

如果我將其配置爲在http://localhost:443/MyService上收聽,則一切正常。我可以通過Internet Explorer連接到http://localhost:443/MyService,並且我收到標準的「錯誤請求」消息

現在,如果我嘗試切換到HTTPS,我正在目睹一個奇怪的現象。

這是我做了什麼:

  1. 我已經改變了我的WCF的配置文件從http://localhosthttps://localhostSecurity=NoneSecurity=Transport
  2. (如在許多WCF教程解釋)我已經注​​冊我的HTTP端口是這樣的:

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

請注意,我使用的證書是「真正的證書」(即由受信任的CA頒發,即Comodo)。服務器響應證書中提到的NS的ping。

現在,下面將超時:

Microsoft Telnet> open localhost 443 

下面是從netstat輸出(pid的 '4' 是 '系統' 的過程):

netstat -nao 

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

下面是從TCPView截圖當我在telnet中發佈open命令時捕獲:

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

我有點困惑。對我來說,如果netstat表示服務器正在443上偵聽,則到443的telnet連接不應該超時,並且至少應該有一個空白提示符,期望我輸入一些加密的東西:)

到目前爲止,已經盡力:

  1. 重做一切從零開始以下完全MSDN教程
  2. 使用的端口10443,而不是443
  3. 禁用防火牆
  4. 使用自簽名證書的步驟

我不知道接下來要嘗試什麼..有什麼想法?

回答

2

遠程登錄客戶端不會知道發送正確構造的請求來發起https握手,所以我想象ssl安全服務器只是在等待更多的數據。

遠程登錄客戶端肯定不會知道如何處理來自ssl安全服務器的響應(它肯定不會提示您發送數據)。通信只能在https握手完成後纔會發生。

您需要使用知道如何進行握手的客戶端。 The openssl binary can do this out of the box.

1

Telnet不能用來與enrited webs交流。

結帳這microsfot注意。它說「注意:此示例假定Web服務器配置爲使用默認的HTTP端口(TCP 80)。如果Web服務器正在偵聽不同的端口,請在示例的第一行替換該端口號。 ,因爲telnet客戶端無法協商必要的加密命令來建立SSL會話,所以此示例通過HTTPS/SSL連接(默認情況下爲TCP 443)無法正常工作。雖然初始連接通過HTTPS/SSL端口是可能的,當你發出一個GET請求沒有數據返回「

更新:結帳這個其他筆記HOW TO: Determine If SSL Connectivity Is Not Working on the Web Server or on an Intermediate Device

+0

是的,這就是我說的話,我至少應該得到一個超時的「初始連接」,而不是..順便說一句,IE瀏覽器不工作...... – Brann 2009-02-12 16:45:31

1

正如FerrariB說,Telnet不進行必要的協商以打開一個SSL連接,Telnet對證書和加密都一無所知,因此,你將無法通過telnet與HTTPS端口443進行通信,你將不得不尋找另一種方式來做任何你想做的事情

檢查維基百科頁面上TLS例如,它直接說:

如果上述步驟中的任何一個失敗,TLS握手 失敗,並且不會創建連接。

這正是您嘗試使用telnet與SSL端點進行通信時所看到的。

0
  1. 在命令提示符:netstat -nao |find "443" 最後一欄顯示的數字: pic no.1

  2. 現在在PID列第1部分(如果沒有啓用PID打開任務manager.find結果數,從視圖選項卡中選擇它)程序名稱顯示使用該端口的程序。

  3. 禁用使用該端口的程序/在我的情況下,我停止了從服務

相關問題