【Azure 環境】當在Azure 環境中呼叫外部介面不通時,如何定位SSL Certificate Problem
阿新 • • 發佈:2021-12-21
問題描述
如果在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
當在複雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 雲中,恰是如此!