c# - 使用 Microsoft.Owin 验证 SSL 证书
问题描述
我想警告用户有关使用不安全证书的 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中获取服务器证书,该证书通常由机器管理员控制,您不应尝试验证。
如果您的目标是验证向您的应用发送请求的浏览器/应用,请通过ApiController.Request检查传入请求以查看它是否包含客户端证书。
推荐阅读
- python - TypeError: translate() 只需要 1 个参数(给定 2 个)Python
- inno-setup - 在 Inno Setup 中创建使用命令行参数执行程序的快捷方式
- java - 我可以将什么定位器用于带有按钮标记名的 span 元素
- c++ - 在哪里放置我的功能?进入我的母语 Gui 还是进入我的主持人?
- html - 浏览器实际上如何检测 HTML 页面编码?
- excel - 无法使用 VBA 隐藏基于共享受保护工作表中的空白单元格的行
- angular - 变量更改后Angular 5 HTML未更新
- python - 无法让 tkinter 窗口标题从“tk”更改
- php - 找不到行的值
- spring-boot - 如何在 REST java angular 中接收对象?