有什么好方法来调试“自我托管的https”连接问题?

时间:2019-01-04 00:42:14

标签: https servicestack

我正在使用Windows 10计算机上的自托管服务栈Web服务,并且尝试在其上启用https。到目前为止,我所做的是:

1)我已经使用我们公司的证书服务器创建了通配符证书,并使用私钥将其导出。

2)我已经在开发机器的“ LocalMachine / Personal”证书存储区中安装了证书。

3)我已经从命令行运行了以下命令:

netsh http add sslcert ipport=0.0.0.0:{DefaultConfig.DefaultSslPort} certhash={sha1} appid={{{appId}}}
netsh http add urlacl url=https://+:{DefaultConfig.DefaultSslPort}/ user=everyone

4)我在Program.cs中添加了以下内容

var listeningOn = $"http://*:{DefaultConfig.DefaultPort}/";
appHost.Start(new[]{ listeningOn, $"https://*:{DefaultConfig.DefaultSslPort}/" });

现在,当我启动项目时,http绑定可以正常工作,Web服务可以按预期加载和运行。但是,当我尝试https绑定时,浏览器显示已建立连接并且证书有效(出现绿色锁定,并且网络流量显示连接成功),但是服务器响应:

HTTP Error 503. The service is unavailable.

很明显它是可用的(如Http绑定所证明的),但是Windows和Servicestack之间有些脱节,我真的不知道该在哪里寻找答案。我尝试了很多搜索短语,但是它们似乎都告诉我检查/执行我已经检查/完成的操作,或者结果特定于特定的应用程序/框架/操作系统,并且没有帮助。

1 个答案:

答案 0 :(得分:3)

好,所以要反对许多,很多,您应该使用以下方法保留网址:

netsh http add urlacl url=https://+:{DefaultConfig.DefaultSslPort}/ user=everyone

使用ServiceStack自托管时。我不知道为什么(如果您知道为什么,请随时发表评论),但这会使Windows无法将https请求向下传递到您的自托管站点。我通过下载ServiceStack源代码进行了检查,并在连接回调上设置了一个断点,该断点是任何传入连接的入口。永远不会命中断点,因此请求永远不会到达Servicestack。

删除网址保留后,一切正常。