问题标签 [http.sys]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6471 浏览

c# - SSL 证书添加失败,错误:1312

我正在构建一个 C# 控制台应用程序,它将:

[1.] 生成自签名证书。

[2.] 将其添加到个人(本地计算机商店)

[3.] 最后使用 netsh 命令将该证书分配给机器上的端口号。

到目前为止,我的部分[1.][2.]工作得很好,但是在[3.]上,我被无用和非正式的错误消息所困扰:

SSL 证书添加失败,错误:1312 指定的登录会话不存在。它可能已经被终止。

当我去看微软关于这个问题的官方页面时:https: //support.microsoft.com/en-us/kb/981506

它基本上告诉我这是一个 Windows 操作系统错误,我应该请求一个修补程序。

我对这个问题的破解解决方案:

我最终绕过此错误的一种方法是打开 IIS 主页>打开“服务器证书”功能>然后导入我的 .pfx 证书。

通过将 .pfx 导入 IIS,我似乎能够毫无问题地解决这个问题。我只需要按顺序运行这两个命令来生成 .pfx

1.)C:\OpenSSL-Win32\bin>openssl req -x509 -sha256 -nodes -days 365 -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" -newkey rsa:2048 -keyout privateKey.key -out certificate.crt

2.)C:\OpenSSL-Win32\bin>openssl pkcs12 -export -out cert.pfx -inkey privateKey.key -in certificate.crt -passout pass:

因此,如果我现在将这两个命令运行到 openssl,并通过 IIS 将它们导入我的个人本地计算机证书存储区,我将没有SSL Certificate add failed, Error: 1312问题。

但是,如果我以编程方式将新生成的证书添加到我的个人本地计算机证书存储中,那么我确实会遇到错误:1312 问题。

这是我的代码:

这是 netsh 命令,只要我不在这个 C# 程序中执行它,它就可以正常工作:

netsh http 添加 sslcert ipport=0.0.0.0:6613 certash=‎‎‎‎8834efd403687b331363ce9e5657ba4ffba0075b appid={e604f84f-e666-4ccf-af52-fdeca666b5e9}

令人困惑的部分

因此,如果您openssl要从该线程逐字执行我的命令,而不是将.pfxopenssl 生成的文件导入 IIS 并最终使用netssh如上所示的带有正确证书哈希的命令,那么整个事情就可以完美运行。但是当你在上面的 C# 代码中自动执行我刚才所说的操作时,我得到了错误。

另一件事是,当您尝试netsh通过命令行手动操作时,生成的 .pfx 将不会从该代码导入到商店中。

有没有人有任何想法?

0 投票
1 回答
720 浏览

windows - 在以经典模式配置的应用程序池中调用 Response.Flush 时,IIS 10 从 HTTP/2 切换到 HTTP/1.1

我们正在尝试在 Windows 2016 的技术预览版 3 中实现 HTTP/2 协议,但是当在以经典模式配置的 ASP.NET 应用程序中调用 Response.Flush 时,连接会切换到 HTTP/1.1。在这种情况下,协议切换到带有分块传输编码的 HTTP/1.1。当应用程序池配置为集成模式时,我们没有问题。

除了使用集成模式将所有连接保持在 HTTP/2 中之外,是否存在解决方法?

0 投票
2 回答
6942 浏览

web-config - web.config 标头大小限制是否会覆盖注册表中的 http.sys 限制?

我有一个 ASP.Net 4.0 应用程序,在 Windows 2003 上的 IIS7.5 上使用 Windows 集成身份验证。

一些用户使用此消息报告错误:

错误请求 - 请求太长

HTTP 错误 400。请求标头的大小太长。

其他人成功加载页面,但在加载其他资源和执行 AJAX 调用时出错。

其中一位遇到间歇性错误的用户的 Kerberos 授权标头大约有 5700 个字符。此用户是 250 个 AD 组的成员。我的理论是,其他 HTTP 标头(inc cookie)的总数可能超过 8000 个字符,如果使用 UTF16 编码,总数超过默认的 16KB 限制。

此页面描述了使用 web.config 配置每个 HTTP 标头的限制: http ://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits/headerlimits

此页面描述了使用注册表设置来设置 HTTP 标头大小和总请求大小的限制,默认情况下均为 16KB: https: //support.microsoft.com/en-us/kb/820129

  1. web.config 设置是否会覆盖 HTTP.sys 注册表设置?
  2. 如果是这样,是否有总请求大小的 web.config 设置?
0 投票
0 回答
103 浏览

wcf - WCF 自托管 Windows 服务 HTTPS 多个域 相同 IP:端口

所以我想让多个 WCF 自托管 Windows 服务通过 HTTPS 监听 443,不同的 IP 地址。

我的基本 URL 类似于:

  • 红色.contoso.com:443/api
  • 蓝色.contoso.com:443/api

但是,当我尝试注册 red.contoso.com:443/api 时,它会占用整个命名空间!!

有没有办法指示 WCF 不尝试注册整个https://+:443命名空间,而只注册 red.contoso.com:443 (或 red.contoso.com 的 IP - 例如 xxx.xxx.xxx .xxx:443)以便我可以让其他服务在 blue.contoso.com:443(或 blue.contoso.com 的 IP - 例如 yyy.yyy.yyy.yyy:443)上侦听?

WCF 自托管可以不支持这种情况吗?

0 投票
1 回答
8647 浏览

asp.net - IIS 8.0 中内核模式和用户模式缓存的区别

内核模式缓存和用户模式缓存有什么区别以及如何跟踪两者?

0 投票
2 回答
662 浏览

ssl - 使用 HTTP.sys SSL 绑定的客户端证书过期验证

我已经通过netsh http add sslcert. 此绑定clientcertnegotiation启用了参数,这会导致 HTTP.sys 子系统在 SSL 握手阶段发出客户端证书请求。

到目前为止一切顺利,客户端证书被请求并且它也是由客户端发送的。问题是这个特定的证书已经过了过期日期。

常识要求到期验证应在此级别完成。是否有任何特定的选项/设置可以实现这一点?

否则,它可能应该在此绑定背后的 WCF 应用程序中处理 - 这是一个完全不同的问题。

0 投票
1 回答
205 浏览

wcf - 使用 http.sys 的自托管 WCF 应用程序为找不到路径返回 HTTP 503

这个问题最初是针对 Azure Service Fabric,因为那是我的部署模型。但我很清楚这是一个 WCF 问题,所以我正在重新措辞以更好地适应它。问题的原始文本在下面以黄色突出显示。

我创建了一个自托管的 WCF 应用程序,它通过端口 80 和 443 公开了一个简单的 Restful WebApi。我的所有端点都按预期工作,就像我在 IIS 中托管相同的代码时一样。问题是,当我通过尝试访问不存在的路径来执行否定测试时,我得到 HTTP 503 错误,而不是我期望的 HTTP 404。

有人向我指出,这可能与 http.sys 有关,因为这是处理传入请求的内容。那么我该如何解决这个问题呢?这肯定是自托管 WCF 应用程序的常见问题。有没有办法让 http.sys 或我的应用程序和用户之间的任何组件返回更有意义的错误,如 404?

关于为什么会这样以及如何解决它的任何想法?

我已经设置了一个无状态服务 WebApi,它通过端口 80 从我的 SF 集群公开暴露。该 api 运行良好,但我注意到如果我在任何无效路径上执行 HTTP 请求,例如“GET http:/ /mycluster.westus.cloudapp.azure.com/thisisinvalid “我正在返回 HTTP 503 状态。我希望是 404,因为 503 具有误导性,会让我的客户感到困惑。顺便说一下,我的无状态服务是基于 WCF 的 WebApi。

0 投票
1 回答
758 浏览

ssl - http.sys 和 winhttp.dll 有 SSL/TLS“会话恢复”和“错误启动”?

我有一个用 Delphi 编写的应用程序,它附加客户端 winhttp.dll,在服务器端它使用 mORMot(SOA/ORM 客户端-服务器库,它附加“http.sys”以实现 Web 服务器功能)。下一步也将是一个用 JS 编写的 Web 客户端。

因此,对于每个延迟约 100 毫秒的正常连接,包含 SSL/TLS 握手的时间将 > 350 毫秒。

我通过“会话恢复”和“错误启动”(通过重用证书和更快地推送数据)阅读到,延迟可能会小于 200 毫秒,这对我来说是一个很大的收获。

所以我的问题是:“http.sys”(服务器)结合“winhttp.dll”(客户端)可以使用这些进步吗?如果是,来自哪个版本?

注意:我想从 Win8.1 和 Win Server 2012 开始这是真的,但我找不到任何文档,只有 >= IIS 8.5 有会话恢复。

0 投票
1 回答
121 浏览

iis - 允许 IIS 虚拟目录传递到单独的 http.sys 绑定

底线:有没有办法让绑定的 IIS 站点的子路径通过直接绑定在 http.sys 中的非 IIS 应用程序?

我在 Windows Server 2008 上使用 IIS 7.5。我有一个绑定到特定根 url 的现有 IIS 站点,比如说fooapps.bar.com。该站点下面有几个应用程序和目录。这一切都很好。问题是我现在想允许一个子路径fooapps.bar.com传递到另一个直接向 http.sys 注册自身的服务,而不是 IIS 应用程序。

因此,该服务将自身与 http.sys 绑定在fooapps.bar.com/Services. 如果我停止绑定到 的 IIS 站点,则http.sys 绑定服务会成功接收和处理fooapps.bar.com对的请求。fooapps.bar.com/Services但是,如果 IIS 站点正在运行,那么所有请求fooapps.bar.com/Services/*都会被 IIS 拦截并返回错误,因为在相应的物理路径上实际上没有任何内容。我怎样才能告诉 IIS 完全忽略fooapps.bar.com/Services,而是让对该路径的请求通过 http.sys 中绑定的任何其他内容?

0 投票
1 回答
1770 浏览

asp.net-core - 自托管 ASP.NET Core 时 - 如果可用,它是否使用 http.sys?

http.sys是 Windows 中的内核模式驱动程序,它极大地加快了传入 HTTP 请求的处理和路由。它是在 Windows NT 4 时代添加的,与 Apache 相比,它为当时尚不成熟的 IIS 提供了基准提升。

对于那些不熟悉的人:它是一个劫持传入 HTTP 请求的组件(在端口 80 和 443 上,您也可以将其配置为监视其他端口)并根据其配置将它们路由到不同的用户级应用程序,有关详细信息,请参阅 MSDN:https:/ /msdn.microsoft.com/en-us/library/windows/desktop/aa364510(v=vs.85).aspx

今天,只要您使用 IIS 来托管您的应用程序,您就可以利用http.sys.

但是,我找不到任何说明自托管 ASP.NET Core 应用程序是否会使用(http.sys如果存在)的信息。