1. 程式人生 > 其它 >【Azure 環境】當在Azure 環境中呼叫外部介面不通時,如何定位SSL Certificate Problem

【Azure 環境】當在Azure 環境中呼叫外部介面不通時,如何定位SSL Certificate Problem

問題描述

如果在Azure VM中,發現同一個API,一臺VM可以訪問成功,另外一臺訪問失敗。如何來除錯並定位問題呢?

問題分析

第一步,檢視訪問外部API不通時候出現什麼錯誤。如果沒有明確的錯誤訊息,就通過ping API的域名,檢查網路連通性

第二步,nslookup 檢視域名是否能夠解析成功

第三步,tcpping/ping/psping等各自方式對外部API的域名進行網路連通性檢查

第四步, 使用curl -vhttps://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

當在複雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 雲中,恰是如此!