【Azure 环境】当在Azure 环境中调用外部接口不通时,如何定位SSL Certificate Problem
问题描述
如果在Azure VM中,发现同一个API,一台VM可以访问成功,另外一台访问失败。如何来调试并定位问题呢?
问题分析
第一步,查看访问外部API不通时候出现什么错误。如果没有明确的错误消息,就通过ping API的域名,检查网络连通性
第二步,nslookup 查看域名是否能够解析成功
第三步,tcpping/ping/psping等各自方式对外部API的域名进行网络连通性检查
第四步, 使用curl -v https://api.kdniao.com 来查看是否能成功与服务器建立连接
第五步,如果发现是SSL建立连接时候出现SSL Certificate problem. 则可以定位出是所访问的外部API服务器证书问题
那如何来解释多台VM的情况下,一些可以,一些不可以呢?
答案:这是因为外部API的服务器并不是一台VM,而是启用了CDN的多个服务器节点,在不同的VM中Dig域名就会拿到不同的服务器IP,而因为旧证书过期,而新证书还没有全网同步的时候,就会在部分VM中出现SSL Certificate Problem:certificate has expired。
如以 api.kdniao.com 为例,解析出来的IP地址有 203.205.159.22 和 106.55.97.71,在Linux机器中,使用curl 访问并指定解析的IP地址,得出两种不同的结果:
一:SSL 连接失败
curl -vo /dev/null 'https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx' --resolve api.kdniao.com:443:203.205.159.22

二:SSL 连接成功
curl -vo /dev/null 'https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx' --resolve api.kdniao.com:443:106.55.97.71

参考
HTTPS协议、TLS协议、证书认证过程解析 : https://www.cnblogs.com/snowater/p/7804889.html
【Azure 环境】当在Azure 环境中调用外部接口不通时,如何定位SSL Certificate Problem的更多相关文章
- C#中调用Windows API时的数据类型对应关系
原文 C#中调用Windows API时的数据类型对应关系 BOOL=System.Int32 BOOLEAN=System.Int32 BYTE=System.UInt16 CHAR=System. ...
- git中的SSL certificate problem: unable to get local issuer certificate错误的解决办法
我们在使用git初始化一个项目时,尤其是通过git submodule update --init --remote初始化子模块时,可能会遇到下面这个错误: fatal: unable to acce ...
- 又踩.NET Core的坑:在同步方法中调用异步方法Wait时发生死锁(deadlock)
之前在将 Memcached 客户端 EnyimMemcached 迁移 .NET Core 时被这个“坑”坑的刻骨铭心(详见以下链接),当时以为只是在构造函数中调用异步方法(注:这里的异步方法都是指 ...
- Titanium中调用ios组件时语言不是本地化的解决方法
用Titanium开发的ios应用中,当调用系统组件时,尽管手机已经设置了系统语言为中文,但那些组件的界面却仍为英文.比如调用iphone中的相册组件,其界面为: 那么怎么让它跟系统语言保持一致呢? ...
- react 在 componentWillMount() 中调用异步函数时,componentWillMount() finishes after render()
刚开始使用 react,很多属性.方法不是很熟.在此记录下我所遇到的问题及解决方法. 我在 componentWillMount() 中调用了一个异步函数,在返回结果中调用 this.setState ...
- 项目中调用ExcelCom组件时的配置流程
异常提示如下: Microsoft Office Excel 不能访问文件“*.xls”. 可能的原因有: 1 文件名称或路径不存在. 2 文件正被其他程序使 ...
- 在Java中调用Python
写在前面 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然,之所以要面对这个问题,或许是因为一些历史原因,或者仅仅是为了简单.恰好我在项目中就遇到了这个问题 ...
- c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法
最近项目中需要实现一个服务器宕机后短信提醒的功能,个人觉得在使用Python 写http请求这块很方便,发短信这块就使用了python,但是c++程序中调用这个脚本时,编译不通过,提示如下错误: er ...
- 关于在C#中构造函数中调用虚函数的问题
在C#中如果存在类的继承关系,应避免在构造函数中调用虚函数.这是由于C#的运行机制造成的,原因如下: 新建一个类实例时,C#会先初始化该类(对类变量赋值,并将函数记在函数表中),然后再初始化父类.构造 ...
- 【Azure 环境】在Windows系统中 使用Terraform创建中国区Azure资源步骤(入门级)
Terraform(全称:Hashicorp Terraform )是一种开源工具,用于预配和管理云基础结构. 它将基础结构编入描述云资源拓扑的配置文件中. 这些资源包括虚拟机.存储帐户和网络接口等. ...
随机推荐
- React中Props的详细使用和props的校验
props中的children属性 组件标签只用有子节点的时候,props就会有该属性; children的属性跟props一样的,值可以是任意值;(文本,React元素,组件,函数) 组件: < ...
- 微信对话平台API开发
接入官方文档接入文档 下面我们开始使用前端来进行接入 <!DOCTYPE html> <html> <head> <meta charset="UT ...
- ActiveReports报表行号
=RunningValue(Fields!字段名称.Value, CountDistinct, "矩表分组名称") RunningValue(Fields!区域.Value, Co ...
- LeetCode贪心算法习题讲解
实验室的算法课程,今天轮到我给师弟师妹们讲贪心算法,顺便也复习一下. 贪心算法这个名字听起来唬人,其实通常是比较简单的.虽然通常贪心算法的实现非常容易,但是,一个问题是否能够使用贪心算法,是一定要小心 ...
- 基于Ernie-3.0 CAIL2019法研杯要素识别多标签分类任务
相关项目: Paddlenlp之UIE模型实战实体抽取任务[打车数据.快递单] Paddlenlp之UIE分类模型[以情感倾向分析新闻分类为例]含智能标注方案) 应用实践:分类模型大集成者[Paddl ...
- 7.1 Windows驱动开发:内核监控进程与线程回调
在前面的文章中LyShark一直在重复的实现对系统底层模块的枚举,今天我们将展开一个新的话题,内核监控,我们以监控进程线程创建为例,在Win10系统中监控进程与线程可以使用微软提供给我们的两个新函数来 ...
- 路由react-router-dom的使用
react-router-dom路由简介 现代的前端页面大多是SPA(单页面应用程序), 也就是只有一个HTML页面的程序,这样用户体验好,服务器压力小,所以更受欢迎.路由是使用单页面来管理原来多页面 ...
- 营销(marketing)、推广(Promotion)和 运营(Operation)的概念分别是什么?
首先要明确的原则: 1.你得承认"讨论任何事情之前不弄清楚概念定义就是耍流氓" 2.你得承认"由于每个人的经验学识和理解力的不同,我们常对概念定义产生分歧" 3 ...
- cs50ai3
cs50ai3-------Optimization cs50ai3-------Optimization 基础知识 课后题目 代码实践 学习链接 总结 基础知识 这节课主要讲了一些优化问题对应的算法 ...
- 关于行结束符(CR、LF)、回车、换行
CR(Carriage Return)表示回车 LF(Line Feed)表示换行 Dos和Windows采用回车+换行(CR+LF)表示下一行而UNIX/Linux采用换行符(LF)表示下一行苹果机 ...