我们开发了一个.NET 4.5应用程序,它在localhost上运行嵌入式(OWIN)Web服务器。
它的一些功能要求我们从互联网上的公共网站向该网络服务器发出AJAX请求。 问题是该站点使用HTTPS。 Chrome现在抱怨正在加载不安全的内容(这是正确的)。
要解决此问题,我们需要让我们的嵌入式Web服务器使用SSL,以便不存在HTTPS-HTTP流量。网上有很多关于创建自签名证书并将其绑定到端口的示例,但我们的应用程序也需要分发。
是否有可能(以及如何)为localhost(OWIN)创建实际可再发行的自签名证书?
我理解这意味着连接不受信任,因为它没有得到SSL管理局的验证,但我们只是尝试使用它,以便本地主机和公共网站之间不存在跨协议通信。
答案 0 :(得分:2)
我们最终解决了这个问题;
我们正在使用SignalR,我们在专门为此目的购买的客户端上分发/安装证书。 因此,我们的安装程序会安装应用程序和证书,并将其绑定到OWIN服务器。我们通过此博客获得了有关如何执行此操作的大部分信息:
https://weblog.west-wind.com/posts/2013/Sep/23/Hosting-SignalR-under-SSLhttps
它包含有关如何使其发挥作用的详细逐步说明。
修改强>
使用netsh命令将证书绑定到端口。我们使用InnoSetup为我们执行此操作。 Info on how to do this is here.
请注意,我们使用单个证书,该命令需要证书密钥才能绑定它。 这可能是使用多个(不同的)证书的问题,我不确定是否可以从证书中提取密钥以动态地为不同的证书发出命令。对于单个证书,我们只有一个密钥,而且是硬编码的。