使用 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 传入的请求以查看它是否包含客户端证书。
我想警告用户有关使用不安全证书的 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 传入的请求以查看它是否包含客户端证书。