5

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

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

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

这是我所做的:

  1. 我已经将我的 wcf 配置文件从http://localhosttohttps://localhost和 fromSecurity=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

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

替代文字 http://img26.imageshack.us/img26/3376/tcpview2si6.jpg

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

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

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

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

4

4 回答 4

2

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

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

您需要使用知道如何握手的客户端。openssl 二进制文件可以开箱即用。

于 2009-02-12T16:53:17.593 回答
1

Telnet 不能用于与加密网络通信。

查看此microsfot说明。它说“注意:此示例假定 Web 服务器配置为使用默认 HTTP 端口 (TCP 80)。如果 Web 服务器正在侦听不同的端口,请在示例的第一行替换该端口号。此外,此示例无法通过 HTTPS/SSL 连接(默认情况下为 TCP 443)正常工作,因为 telnet 客户端无法协商建立 SSL 会话所需的加密命令。虽然可以通过 HTTPS/SSL 端口进行初始连接,但没有发出 GET 请求时返回数据。”

更新:查看此其他说明如何:确定 SSL 连接是否在 Web 服务器或中间设备上不起作用

于 2009-02-12T16:37:05.540 回答
1

正如 FerrariB 所说,telnet 不执行打开 SSL 连接所需的协商。Telnet 对证书和加密一无所知。因此,您可以保证无法通过 telnet 与 HTTPS 端口 443 进行通信。你将不得不找到另一种方法来做你想做的任何事情。

例如,查看有关TLS的 Wikipedia 页面,其中直接显示:

如果上述任一步骤失败,则 TLS 握手失败,并且不会创建连接。

这正是您尝试使用 telnet 与 SSL 端点通信时所看到的。

于 2009-02-12T16:53:01.820 回答
0
  1. 在命令提示符下:netstat -nao |find "443" 最后一列显示一个数字: pic no.1

  2. 现在在 pid 列的第 1 部分打开 task manager.find 结果编号(如果未启用 pid,请从视图选项卡中选择它)程序名称显示使用该端口的程序。

  3. 禁用使用端口的程序/在我的情况下,我从服务中停止了它

于 2017-11-07T12:55:03.153 回答