AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[iis](server)

Martin Hope
Luis Abreu
Asked: 2025-02-21 20:05:27 +0800 CST

IIS:配置 Web 应用程序以使用客户端证书进行身份验证

  • 7

我们的目标是在 IIS 上托管 ASP.NET Core 9.0 网站并使用客户端证书进行身份验证。 ASP.NET Core Web 应用程序运行良好:直接从 Kestrel 运行时,一切都按预期运行,即提示用户选择将用于对其进行身份验证的有效证书。

文档说IIS配置仅限于3个步骤:

  1. 从连接选项卡中选择站点
  2. 双击 SSL 设置选项
  3. 单击需要 SSL 复选框,然后在客户端证书部分中选择需要单选按钮

不幸的是,它不起作用。我们已经激活了失败请求跟踪,并且通过该配置,ASP.NET Core 模块将始终以请求不受支持错误终止请求:

在此处输入图片描述

请注意,最终用户总是会看到 500 错误页面,甚至没有机会选择用于身份验证的证书。

因此,为了简化思考,我们决定从等式中删除 aspnet core 应用程序,并建立一个简单的站点,其中包含一个 index.html 页面,看看是否至少可以对其进行配置,以便浏览器让用户选择证书。

我们仅在网站上激活了 https 绑定:

在此处输入图片描述

并且还更改了默认的 SSL 设置:

在此处输入图片描述

我们还激活了失败请求跟踪,以便获取有关正在发生的事情的更多信息。此初始配置最终出现了传统的 500 错误:

在此处输入图片描述

以下是失败请求跟踪文件的输出:

在此处输入图片描述

经过进一步挖掘,我们还找到了这篇文章。我们再次更新了我们的 web.config,使其看起来像这样(我们必须在根级别解锁身份验证子部分):

<security>
  <authentication>
    <anonymousAuthentication enabled="false" />
    <iisClientCertificateMappingAuthentication enabled="true" />
  </authentication>
</security>

结果仍然相同。因此,我们继续添加从证书到现有用户的映射(我们使用 IIS 管理器来确保一切正确):

<security>
    <authentication>
        <anonymousAuthentication enabled="false" />
        <windowsAuthentication enabled="false" />
        <iisClientCertificateMappingAuthentication enabled="true">
            <oneToOneMappings>
                <add userName="XXX" 
                     password="[enc:IISCngProvider:wX....]" 
                     certificate="MIIFTDCCBDSgAwIBAgITdQAAEJsn8Q3PLgZ4iwAAAAAQm..." />
            </oneToOneMappings>
        </iisClientCertificateMappingAuthentication>
    </authentication>
</security>

再次,仍然不起作用(即,用户永远无法选择证书)。经过进一步挖掘,我们发现一些帖子说必须启用 Windows 身份验证才能使其工作。所以我们激活了它:

<windowsAuthentication enabled="true" />

但是不行,还是不行。加载页面时我根本没有机会选择证书。

那么,有人可以向我指出有效的文档,该文档显示如何配置 IIS 以要求客户端在导航到网站时出示证书吗?

iis
  • 1 个回答
  • 37 Views
Martin Hope
SuperAl
Asked: 2025-01-12 00:31:09 +0800 CST

这个服务器故障让我很困惑:连接方向、源和目标的组合毫无意义

  • 5

在我查看的 Windows Server 上,IIS 运行 WWW 发布服务,并且防火墙仅允许端口 80 和 443 访问此服务。来自客户端浏览器的连接超时,当我查看服务器上的安全事件日志时,我看到记录的事件如下:

The Windows Filtering Platform has blocked a connection.

Application Information:
    Process ID:     4
    Application Name:   System

Network Information:
    Direction:      Inbound
    Source Address:     192.168.10.21 <= This is this server where the event is logged
    Source Port:        80 <= This is the IIS WWW publishing service listening port
    Destination Address:    192.168.10.3 <= This is the client PC where the browser requests the URL on the IIS
    Destination Port:       60112
    Protocol:       6

Filter Information:
    Filter Run-Time ID: 86327
    Layer Name:     Receive/Accept
    Layer Run-Time ID:  44

如果连接是如上所述的入站,则源应该是 192.168.10.3,源端口应该是浏览器使用的任何随机高端口,目标应该是 192.168.10.21,目标端口应该是 80,但事实恰恰相反。

不明白为什么事件字段是颠倒的,我无法理解如何允许这种连接。

如果这实际上不是原始请求,而是 IIS 对已允许的请求的响应,那么为什么它会被阻止?防火墙上没有阻止规则,唯一与 HTTP(s) 连接有关的规则是 IIS WWW 服务的允许入站规则。

我已经按照上面描述的方式设置了大量 Apache 服务器及其各自的规则,从来没有遇到任何问题。如果 IIS 需要不同的方法,那么为什么以及如何做?供应商要求网站在 IIS 上运行,因此在这方面我没有自由。

编辑:

如果我修改规则以应用于任何程序或服务,则连接有效。如果我将其限制为仅适用于服务,它仍然有效。并且只有当我专门选择全球 Web 发布服务作为其目标时,它才会停止允许连接。由此可见,Windows 防火墙和 IIS 之间存在一些问题,但是什么问题呢?

iis
  • 1 个回答
  • 77 Views
Martin Hope
ku4eto
Asked: 2024-10-12 18:42:22 +0800 CST

IIS 10:如何删除服务器和 NET 标头

  • 4

设置如下:

带有 IIS 10 的 Windows Server 2022 标准版。

基于 ASP .NET 4.8 的应用程序,使用Integrated mode和运行Application Pool Identity。

我正在尝试删除以下标题:

Server,,,,。X-Powered-By​​X-ASPNet-VersionX-ASPNetMVC-Version

无论做什么,标题都会保留。

尝试过的事情:

  1. RESPONSE HEADERS从标题中删除服务器级别X-Powered-By- 无效果,仍然显示在动态内容上。

  2. 在服务器 applicationhost.config 配置文件和应用程序配置文件中设置 enableVersionHeader 无效:

<configuration>
  <system.web>
    <httpRuntime enableVersionHeader="false" />
  </system.web>
</configuration>
  1. 在服务器级别设置无效:
<configuration>
  <system.webServer>
    <security>
      <requestFiltering removeServerHeader="true" />
    </security>
  </system.webServer>
</configuration>
  1. 将 DisableServerHeader DWORD 注册表值设置为 1,并重新启动 IIS,但无效: HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters!DisableServerHeader

  2. 尝试修改Global.asax以删除 ASPNetMVC 标头,但它破坏了应用程序。

我确认,服务器级别的更改已延伸至网站级别。我也尝试在网站的 web.config 中手动设置。效果相同(无)。

URL 扫描已不再可用,因此它不再是一个选项。最后一个选项似乎是使用 URL 重写,但如果可能的话,我宁愿不使用它,因为据说有原生解决方案。

我做错了什么?我遗漏了什么吗?

iis
  • 3 个回答
  • 93 Views
Martin Hope
mcintoan
Asked: 2024-09-19 15:28:32 +0800 CST

使用一个公共 IP 在两个不同的服务器上托管网站

  • 6

因此,我正在考虑在不同的服务器上托管两个网站,例如:IIS 服务器上的生产站点:192.168.0.1 和 SpecialApps IIS:192.168.0.2,这也是当前的测试服务器,最终将投入生产。

目前,经过无数小时的研究,有人建议我应该安装应用程序请求路由 (ARR),我已经在 .2 服务器上这样做了

我的目标是能够通过https://test.mycompany.com.au进入 .2 并通过https://test.mycompany.com.au/prod进入 .1

当用户访问https://test.mycompany.com.au/prod时,需要重定向到https://mycompany.com.au,这是托管在 .1 上的生产 URL

尝试使 URL 重写代码模式正常工作时遇到问题

这是否可行?

iis
  • 1 个回答
  • 63 Views
Martin Hope
Avenger
Asked: 2024-08-24 03:34:38 +0800 CST

IIS 日志需要很长时间才能显示请求条目

  • 5

有没有办法让 IIS 尽快将请求转储到其日志文件?

语境

我遇到了一个问题,即我向 IIS 发出的请求被处理和实际记录到 IIS 日志之间存在很长的延迟。延迟时间可能在 20 秒到 60 秒之间。

一些关键点:

  • 一旦请求出现在日志文件中,它就会显示请求发生的实际时间,
  • 报告显示请求处理速度最快仅需 350 毫秒,
  • 在 IIS 请求日志中,请求也没有“卡住”
  • 请求很快被浏览器完全处理
  • 我注意到,在生产中,无论是稍微繁忙还是完全不繁忙,Windows Server 2012(IIS 6.2 build 9200)
  • 在我的开发主机中也有同样的行为,一点也不忙,Windows 10(IIS 10.0.19041.1)
  • 生产是在亚马逊存储中进行的(我无法说出他们使用的确切技术,我相信它源自 SSD)
  • 本地存储是SSD盘
  • 如果我监视同一磁盘/文件系统中的文件,则对文件的更新会立即反映到显示屏上(最多,如果有的话,延迟 1 秒)

我尝试过的一些方法

我尝试过tail -f或不断重复tail命令,以及使用“查看 > 监控 (tail -f)”模式的 Notepad++。所有这些都同时更新文件内容,遵循有点随机但总是很长的延迟。

从我在 StackOverflow 上发布的这个问题的副本(题外话)中,Xudong Peng 建议我尝试从 IIS 服务器范围的配置文件(或IIS 管理器顶级节点(计算机)>配置编辑器> )进行flushByEntryCountW3CLog设置。它确实使日志记录间隔发生了变化,但情况更糟。现在感觉它每分钟都在被转储,所以我将其恢复为 0。%WinDir%\System32\Inetsrv\Config\applicationHost.configsites.applicationHost/sites/siteDefaults/logFile

关于上述主题,我还确保<site>我测试的特定内容不会覆盖sitesDefault/logFile/flushByEntryCountW3CLogin applicationHost.config。还回收了应用程序池(因此网站也被回收了),设置肯定会生效。仍然是相同的“行为”变化,似乎更糟。

看起来,即使缓冲区(该设置的 64k)未填满,它也大约每分钟都会被转储一次。设置为该1值时,转储发生在 1 到 2 分钟之间。

我找不到有关“日志文件缓冲区”的任何其他设置(因此 IIS 会在将日志条目“转储”到文件之前填充一个缓冲区)。

底线

这是正常的吗?处理 IIS 日志的每个人都需要花时间检查日志中的请求,或者是否有办法(至少暂时)让 IIS 尽快将请求转储到日志文件中?

iis
  • 1 个回答
  • 27 Views
Martin Hope
Paul Alexander
Asked: 2024-08-08 20:14:07 +0800 CST

Windows 防火墙阻止 IIS FTP 连接 - 已启用 FTP 端口规则

  • 4

我已经使用 IIS 设置了 Windows FTP 服务器。防火墙端口规则已在 FTP 安装期间自动设置并启用,允许端口 21、1024-65535 和 990 上的 FTP 通信。 FTP 防火墙规则

当我尝试从运行 FTP 服务器的服务器进行连接时,我可以成功连接,没有任何问题。但是,当我尝试从网络上的计算机连接到 FTP 服务器时,连接超时,如果我禁用防火墙,我就可以成功连接。

我正在使用 PowerShell 测试 FTP 连接。

任何帮助都值得感激。谢谢。

iis
  • 1 个回答
  • 29 Views
Martin Hope
James Johnson
Asked: 2024-07-26 03:44:44 +0800 CST

MSSQL 查询在通过 .NET/IIS 运行时挂起,但在 SSMS 中成功运行

  • 6

当我在 SSMS 中直接手动运行查询时,它成功运行(10-20 秒内)。当通过 .NET/IIS Web 应用程序启动查询时,它会无限期挂起,并最终锁定其他查询。我等了 20 分钟后最终终止了查询。

通过 .NET/IIS 应用程序应用查询时,哪些因素会导致查询挂起?

它有一些大型表连接,但它在 SSMS 中运行得相当好,所以我预计在 .NET Web 应用程序上的时间也差不多。有什么想法吗?

谢谢你!

iis
  • 2 个回答
  • 54 Views
Martin Hope
Craig
Asked: 2024-06-19 05:29:15 +0800 CST

IIS 10 网站提供不存在的 SSL 证书

  • 6

当从外部访问网站时,我们会收到之前(几个月前)删除的 SSL 证书,因为该证书已过期,并颁发了新证书。我在任何地方都找不到对旧证书的任何引用。运行时,netsh http show sslcert旧证书不在输出中,而重新颁发的证书在输出中。当访问服务器上的网站时,预期的证书已正确提供。

这是 Windows Server 2019 Standard 和 IIS 10。该服务器早于我,所以我没有参与设置。它很可能是在从一家托管公司转移到另一家托管公司时从现有服务器的映像创建的。

iis
  • 1 个回答
  • 73 Views
Martin Hope
blogs4t
Asked: 2024-06-05 02:11:21 +0800 CST

https 仅适用于一个 aspx Web 表单应用程序 - IIS 10

  • 4

我们在“默认网站”下安装了旧版 Web 表单 .aspx Web 应用程序,是否可以仅为此 Web 应用程序启用 https: ?鉴于“默认网站”下部署了其他 Web 应用程序

我在网上找到的所有说明都坚持在 IIS 端口 443 上创建 https: 绑定

挑战是,我想知道是否有任何其他可能的方式来启用 https: 只为一个 Web 应用程序而不影响其他应用程序?

iis
  • 1 个回答
  • 47 Views
Martin Hope
Zonus
Asked: 2024-05-16 21:44:34 +0800 CST

尝试理解 iis 日志文件中的日志条目

  • 5

我的一项休息服务在一台旧服务器(iis 7)上离线了。虽然我确实需要将其移至更新的服务器;我需要至少在短期内将其恢复在线。

我正在使用邮递员检查响应,但收到 500 服务器错误作为回报。

遗憾的是,似乎 FailedReqLogFiles 并未针对休息服务进行更新;至少那里什么也没有出现。

在该站点的 iis 日志文件中,我有以下内容:

2024-05-16 13:32:41 10.1.1.101 GET /api/GetInfo - 443 checkuser 10.1.1.202 PostManRuntime/7.37.3 500 0 0 15312

除了最后 3 个数字之外,我理解了该行的大部分内容。

500 是错误,但是 0 0 15312 是什么?

iis
  • 1 个回答
  • 26 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve