【转】D365 FO第三方访问https证书问题
D365FO采用https,第三方通过API调用的时候,客户端不见得信任D365FO的证书,调用时候会报
基础连接已关闭,发送时发生错误,调用堆栈如下:
1 at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)2 at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)3 at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)4 at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)5 at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)6 at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)7 at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)8 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)9 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
10 at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
11 at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
12 at System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)
13 at System.Net.ConnectStream.WriteHeaders(Boolean async)
从调用堆栈看,应该是跟SSL验证有关系。
当然有时候还会直接报
基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系
这个就更直接了。
网上有很多解决办法,目的是让https请求跳过客户端对SSL证书的验证。
1 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
2 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(
3 (object caller,
4 X509Certificate certifacate,
5 X509Chain chain,
6 SslPolicyErrors erros) => { return true; });
7 var request = HttpWebRequest.Create(url);
这段代码一定要放到HttpWebRequest之前,要不然回调的时候调不到方法。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
这一句也是必须的,D365的协议版本是Tls12,指定别的版本也不会跳过检查。
【转】D365 FO第三方访问https证书问题相关推荐
- 【转】D365 FO第三方集成(四)---客户端调用
客户端调用json-based服务非常简单,就是标准的http调用. http调用首先要解决URL的组成,D365 FO json-based调用的url组成如下: https://usnconebo ...
- curl证书过期_centos7内核升级及curl访问https证书过期处理
centos7内核升级及curl访问https证书过期处理 先看下当前系统的linux内核版本 uname -r 3.10.0-229.el7.x86_64 升级步骤 1.rpm --import h ...
- 【转】D365 FO第三方集成(三)---服务实现
D365 FO的Custom Service的实现比AX2012简单了很多. AX2012服务方法要用属性SysEntryPointAttribute标记,添加到Services以后,还要发布服务并在 ...
- https访问报证书错误_访问https 证书错误
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- python怎么爬虫https的内容_爬虫15 python 如何处理HTTPS请求访问 SSL证书验证
1 https和SSL之间是什么关系 https和SSL之间是什么关系:https就是在http上面加了一层ssl协议,在http站点上部署SSL数字证书就变成了https. 现在随处可见 https ...
- curl 忽略证书访问 https
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具.然而在使用cr ...
- harbor镜像仓库-https访问的证书配置 (docker配置harbor https证书)
harbor镜像仓库-https访问的证书配置 生成CA证书 随便搞个什么文件夹,用于存放生成的证书 创建key文件: root@eb7023:/data/certs>openssl genrs ...
- IIS 使用OpenSSL 生成的自签名证书,然后使用SingalR 客户端访问Https 站点通信
使用SignalR 的客户端去发送消息给使用 https 部署的站点,官方文档目前并没有详细的教程,所以在此记录下步骤: 使用管理员身份打开cmd 窗口,选择一个整数保存文件夹的地址,切换到对应的文件 ...
- CloseableHttpClient加载证书来访问https网站
2019独角兽企业重金招聘Python工程师标准>>> CloseableHttpClient加载证书来访问https网站 对安全性有要求的网站一般使用https来加密传输的请求和响 ...
最新文章
- 到了管理层我才发现,这些管理知识应该尽早学起来!
- Cocos 2d-X Lua 游戏添加苹果内购(一) 图文详解准备流程
- C++ 向函数传数组的方法
- C++迭代器的使用和操作总结
- nginx: [warn] the “ssl“ directive is deprecated, use the “listen ... ssl“ directive instead in
- python的基础知识可以应用到哪方面-Python基础知识
- 修改现有用户帐户的 Microsoft Lync Server 2010 属性
- Windows系统安装Redis(详细)
- 微软安全软件_微软在GitHub上发布了一个供内部使用的Linux发行版
- 模拟CMOS 集成电路设计
- 微软windows10易升_微软官网下载与安装windows10系统的操作步骤
- 广播前置放大器的作用_IP网络广播前置放大器
- win10 动态磁盘 linux,windows10系统下基本磁盘变成动态磁盘了如何解决
- python使用二分搜索求log以2为底10的近似值
- rep的软件用什么打开_rep文件用什么软件打开
- java毕业设计基于ssm框架的生鲜超市进销存管理系统
- 一场“测谎”人机对战背后的故事:度小满的技术进击之路
- 【交换篇】(6.4) ❀ 01. HA 状态下的核心交换机连接方法 (上) ❀ FortiSwitch 交换机
- 图像处理——振铃现象
- 零基础学习深度学习_深度学习的基础!!!