【问题标题】:Catching IIS-level certificate errors in C# code在 C# 代码中捕获 IIS 级证书错误
【发布时间】:2011-04-08 00:03:28
【问题描述】:

我正在制作一个将使用 X509 证书保护的 SOAP 处理程序,其中一项要求是程序尽可能多地记录在现有的日志查看器中。显然,在 IIS 级别处理的证书存在很多错误,在这种情况下是不可接受的。

我已经用 C# 代码解决了日志记录部分。那部分很容易。更难的部分是让 IIS 级错误进入代码,而不是作为无用的 Web 错误返回给客户端。我查看了this thread,但由于正在发生的事情的性质,我们的项目缺少 App_Code 文件夹,所以它不是非常适用。

有什么建议吗?

【问题讨论】:

  • 您的“SOAP 处理程序”是否是 HTTP 端点,即在响应入站连接的服务器上运行?
  • 是的。我们基本上已经设置好了,这样请求处理程序的人会用他们的请求访问一个 .aspx 网页,web.config 会将它从那里重定向到适当的 .cs 文件。

标签: c# iis certificate x509


【解决方案1】:

假设您在 IIS7 或更高版本上运行,一般答案也适用于您——您可以使用自定义 HttpModule 来捕获应用程序的 IIS 级错误。只是,与其将模块放在 App_Code 中,不如使用您的应用程序构建它并更改接线以查看那里。

【讨论】:

  • 我的开发机器运行在IIS7上,但是我们的生产环境运行的是IIS6。不幸的是,特定于 IIS7 的解决方案在这里不会很有用。
【解决方案2】:

对于 IIS6,我认为您需要一个 ISAPI 过滤器(仅限 C++),以便在请求被视为无效之前查看请求(例如,由于证书错误)。

如果我没记错的话,IIS 中的 SSL 也是由 ISAPI 过滤器实现的,所以我怀疑它是否有更好地处理/记录证书错误的钩子。

我的公司在一个项目中遇到了证书问题,我们向 Microsoft 支持服务部​​门询问了有助于诊断的工具/日志。关于获取有关错误的更多信息的能力没有令人满意的答案。

我想重新实现 SSL 握手对您的项目来说工作量太大,因此获取更多信息的唯一方法是购买这样的 SSL 实现,假设存在一个用于 IIS6 并为您提供所需信息的 SSL 实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-10
    • 2011-08-19
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2012-08-01
    相关资源
    最近更新 更多