我使用 wsHttpBinding
构建了一个自托管的 wcf 服务器。我正在运行 Win 2003 服务器 R2 SP2。
如果我将其配置为监听 http://localhost:443/MyService
,一切正常。我可以使用 Internet Explorer 连接到 http://localhost:443/MyService
,并收到标准的“错误请求”消息
现在,如果我尝试切换到 HTTPS,我会看到一个奇怪的现象。
这是我所做的:
- 我已将我的 wcf 配置文件从
http://localhost
更改为https://localhost
并将Security=None
更改为Security=Transport
(如许多 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' 是 '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 连接不应该超时,我应该至少有一个空白提示,期待我输入一些加密的东西:)
到目前为止,我已经尝试过:
- 完全按照 MSDN 教程从头开始重做所有步骤
- 使用端口 10443 而不是 443
- 关闭防火墙
- 使用自签名证书
我不知道接下来要尝试什么……有什么想法吗?
最佳答案
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/