自托管C#SSL Web服务器,无需管理员权限

时间:2014-01-24 19:57:12

标签: c# wcf ssl https

我们有自托管的C#WCF服务,通过HTTPS提供rest API。

问题:为SSL配置证书需要管理员权限。我假设它与WCF有关,取决于http.sys的http / https处理。该服务旨在部署在客户环境中。因此,如果它可以在不需要管理员权限的情况下运行,那就太好了。

看起来WCF依赖于http.sys,
Can I self-host an HTTPS service in WCF without the certificate store and without using netsh http add sslcert?

想知道是否存在支持SSL并且不需要管理员权限的任何其他嵌入式Web服务器解决方案?

到目前为止检查,
http://nancyfx.org/
https://github.com/pvginkel/NHttp

两者似乎都不支持SSL。

1 个答案:

答案 0 :(得分:1)

大多数Windows托管的Web堆栈依赖于HTTP Server API,它是围绕内核HTTP堆栈的API(a.k.a HTTP.sys)。 .Net HttpListener类也是如此(与WCF相同,OWIN自托管asp.Net等依赖它)。

确定,您确实知道您可以授权您运行应用程序的身份绑定到HTTPS URL,即使它不是作为管理员帐户运行,对吧?如果您可以在安装阶段获得管理员权限,这可以解决您的问题? (假设你已经检查过) 您可以在我撰写的关于here

的博客文章中阅读更多内容

努力在原始套接字之上构建一个http堆栈将是一项很大的努力而且几乎没有任何收获。所以我会怀疑你会发现类似的东西。

除非,它希望是跨平台的 任何基于Java的Web服务器都可能就是这样,使用JVM的http栈并依靠java密钥库为SSL提供所需的证书。 (使其在不同的操作系统中可移植)
如果你想去java,我相信你可以找到很多这样的网络服务器。

如果您想尝试使用CGI绑定到Web服务器,请查看mongoose(从未使用它是诚实的)。

另一个想到的选择是使用像Stunnel这样的ssl代理站在Web服务器前面。它将使用非Windows证书存储区执行SSL部分。