網友 Lauyea 提問,照著範例教學:使用 ASP.NET MVC 打造 WebAPI 服務的範例程式實作,卻卡在 PostMan 測試沒反應。

發問有附了詳細圖片,也依循建議加了 HomeController Index() 做過對照,不過我江湖經驗不足,沒在第一時間看出端倪(其實答案早在圖片中),最後下載 Lauyea 放上 Github 的專案重現錯誤後才找出問題,也學到一些東西,特筆記備忘。

狀況為按 F5 測試網站沒問題,但 PostMan 發 Request 時卡住:

我起初糾結在錯誤訊息裡的 Could not get any response 跟 The server couldn't send a response,想說是 IIS Express 因某個神奇原因暴斃沒反應。但真正的關鍵在:URL 是 httqs://localhost:44335,跟 Self-signed SSL certificate are being blocked.

IIS Express 跑 HTTPS 時使用自行簽發的 SSL 憑證,這種非第三方公正 CA 發出的憑證對 PostMan 來說是無效的,認定有資安疑慮而禁止連線。

要解決這個問題,有兩個方向。如錯誤訊息提示,PostMan 有設定可以停用 SSL 憑證檢核,將 IIS Express 的自簽 SSL 憑證視為有效進行連線。(風險是測試其他網站若遇到中間人攻擊會無法察覺,故建議測完恢復啟用較安全)

另一個做法是停用 IIS Express 的 HTTPS 連線,改回一般 http:// :

最後有個疑點,為何 Chrome / IE 測試不會遇到 SSL 憑證無效問題? 原因是 IIS Express Development Cerficate 這張憑證有被加入 Windows 的受信任根 CA 清單,IE 跟 Chrome 依此判定憑證合法,而 PostMan 未採用它做為憑證檢核依據。

使用 Firefox 連線 IIS Express HTTPS 有憑證無效警示,也是類似的原因。(Firefox 有自己的信任 CA 清單,可藉由將 IIS Express Development Cerficate 加入受信任清單解決問題)

Tips of resolving the issue that PostMan can't connect to IIS Expresss due to self-signed SSL certificate.


Comments

# by Lauyea

感謝黑大,早上六點發文辛苦了。

# by Tony

黑大內容中的字打錯囉~httqs --> https

# by Jeffrey

to Tony, 故意的,避免瀏覽器或App雞婆把它們轉成可點選連結。

Post a comment


63 + 22 =