使用 Microsoft.Owin 验证 SSL 证书

Validate SSL certificates with Microsoft.Owin

我想警告用户有关使用不安全证书的 TLS 连接到类似于此(释义)的 Microsoft.Owin 自托管应用程序。

public class Startup
{
    public void Configuration(IAppBuilder appBuilder)
    {
        HttpConfiguration config = new HttpConfiguration();
        config.Routes.MapHttpRoute(
                name: "API",
                routeTemplate: "{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        appBuilder.UseWebApi(config);
    }
}

在这种情况下从不使用 ServerCertificateValidationCallback,所以这不起作用:

            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateCertificate);

如何对 Microsoft.Owin 应用程序的连接进行证书验证?

那是因为 ServerCertificateValidationCallback 用于验证诸如 HttpClient 之类的“远程”证书,但您的应用程序本身就是一个 HTTP 服务器。

此类应用从 Windows HTTP API 获取服务器证书,该证书通常由机器的管理员控制,您不应尝试验证。

如果您的目标是验证 browsers/apps 向您的应用程序发送请求,请检查通过 ApiController.Request 传入的请求以查看它是否包含客户端证书。