.NET 9中如何在EWS API中自定义服务器证书验证回调以接受所有SSL证书
.NET 9中如何在EWS API中自定义服务器证书验证回调以接受所有SSL证书
嗨,我来帮你搞定这个问题!在.NET 9里要让EWS Managed API跳过SSL证书验证、接受所有证书,核心就是给EWS服务配置自定义的证书验证回调,下面我一步步给你讲具体操作:
首先创建一个
HttpClientHandler,在里面设置自定义的证书验证逻辑,让它始终返回true(也就是不管证书是否合法都接受):var handler = new HttpClientHandler(); // 自定义证书验证回调,无条件接受所有SSL证书 handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true;接下来把这个handler关联到你的
ExchangeService实例上。EWS底层是用HttpClient发送请求的,我们可以通过HttpClientFactory来注入自定义的HttpClient:// 初始化EWS服务实例,指定对应的Exchange版本 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2016); // 配置你的EWS服务凭据和地址(替换成你自己的信息) service.Credentials = new WebCredentials("你的用户名", "你的密码"); service.Url = new Uri("https://你的Exchange服务器地址/EWS/Exchange.asmx"); // 把自定义的handler绑定到EWS服务上 service.HttpClientFactory = () => new HttpClient(handler);最后执行你原来的订阅代码就可以了,这时候EWS请求就会跳过SSL证书验证:
StreamingSubscription streamingsubscription = Task.Run(() => service.SubscribeToStreamingNotifications( new FolderId[] { WellKnownFolderName.Calendar }, new EventType[] { EventType.Created, EventType.Deleted, EventType.Modified } )).Result;
⚠️ 特别提醒:这种接受所有证书的操作只适合开发/测试环境,生产环境绝对不能这么做,会导致你的服务面临中间人攻击等严重安全风险,生产环境一定要使用合法的SSL证书并启用正常的证书验证逻辑!
备注:内容来源于stack exchange,提问作者Kosulin Kirill
相关产品推荐
相关产品推荐

