wcf - netstat 说 443 已打开,但我无法使用 telnet 连接到它。为什么?

标签 wcf tcp ssh windows-server-2003 telnet

我使用 wsHttpBinding 构建了一个自托管的 wcf 服务器。我正在运行 Win 2003 服务器 R2 SP2。

如果我将其配置为监听 http://localhost:443/MyService,一切正常。我可以使用 Internet Explorer 连接到 http://localhost:443/MyService,并收到标准的“错误请求”消息

现在,如果我尝试切换到 HTTPS,我会看到一个奇怪的现象。

这是我所做的:

  1. 我已将我的 wcf 配置文件从 http://localhost 更改为 https://localhost 并将 Security=None 更改为Security=Transport(如许多 wcf 教程中所述)
  2. 我已经像这样注册了我的 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' 是 'System' 进程):

netstat -nao

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

这是 TCPView 的屏幕截图当我在 telnet 中发出打开命令时捕获:

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

我有点不解。对我来说,如果 netstat 说服务器正在监听 443,那么到 443 的 telnet 连接不应该超时,我应该至少有一个空白提示,期待我输入一些加密的东西:)

到目前为止,我已经尝试过:

  1. 完全按照 MSDN 教程从头开始重做所有步骤
  2. 使用端口 10443 而不是 443
  3. 关闭防火墙
  4. 使用自签名证书

我不知道接下来要尝试什么……有什么想法吗?

最佳答案

telnet 客户端不会知道发送正确构造的请求来启动 https 握手,所以我想 ssl 安全服务器只是在等待更多数据。

telnet 客户端肯定不会知道如何处理来自 ssl 安全服务器的响应(它肯定不会提示您发送数据)。只有在 https 握手完成后才能进行通信。

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

关于wcf - netstat 说 443 已打开,但我无法使用 telnet 连接到它。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/542178/

相关文章:

wcf - 如何调试到system.servicemodel类?

java - TCP 套接字 IOException 绑定(bind)失败 : EADDRINUSE (Address already in use)

慢启动阶段的TCP拥塞窗口大小

git - Mac : SSH doesn't work anymore without changing something

java - 如何使用 ssh 和 key 授权 CRaSH

c# - 用于 32 位 dll 访问的自托管 WCF 服务

.net - WCF WebService - 有没有办法确定客户端收到响应?

c# - 从 .NET(特别是 Windows Phone 7)调用任意 JSON 服务器的最佳方法是什么

linux - 使用 ZeroMQ 流连接到设备失败,但 Linux 套接字工作

vim - SSH session 中TMUX内的系统剪贴板Vim