為什麼是「我們」要驗證憑證?從 HTTPS 到 Proxy 的憑證原理解密!

更新於 發佈於 閱讀時間約 7 分鐘

在開發系統時,你是否曾經遇過這樣的錯誤訊息?

System.Security.Authentication.AuthenticationException: 
The remote certificate is invalid because of errors in the certificate chain: Untrusted Root

或是:

System.Net.Http.HttpRequestException: 
The SSL connection could not be established.

這些錯誤常與「憑證驗證失敗」有關,但一個常見的問題是:為什麼要由「我們」的程式碼來驗證對方的憑證?尤其當我們只是想呼叫一個 API、或透過 Proxy 發送請求,憑證不是應該在對方伺服器或 Proxy 設好就好嗎?

本文就來解開這個疑惑,從 HTTPS 原理談起,一步步帶你了解憑證驗證為什麼是「我們」的責任。

🐻HTTPS 是怎麼確保安全的?

HTTPS(HTTP over SSL/TLS)本質上是加密版的 HTTP。為了防止中間人攻擊、確保資料傳輸的完整性與機密性,它在建立連線時會進行一連串的「TLS 握手(handshake)」。其中一個關鍵步驟就是:

伺服器會將自己的憑證(certificate)提供給客戶端進行驗證。

🐻驗證什麼?

  1. 憑證是否由受信任的憑證機構簽發(CA)
  2. 憑證的有效期間是否正確
  3. 憑證的主體是否與目標主機(domain)相符
  4. 憑證鏈(Certificate Chain)是否完整與可信

這些檢查,都是在「客戶端」端進行的,也就是我們的程式碼端
如果以上條件有一項不符合,就會產生憑證錯誤,導致連線中斷。

為什麼是我們驗證?

在 TLS 設計中,信任是「由下往上」建立的。舉個例子:

  • 當你打開瀏覽器前往 https://example.com,瀏覽器會先檢查該網站的憑證是否可信。
  • 瀏覽器信任哪些根憑證(Root CA),是由你電腦或作業系統事先定義好的。
  • 如果這條信任鏈斷了,連線就會被視為不安全、甚至被拒絕。

同樣地,當我們用程式(例如 C# 的 HttpClient)去呼叫某個 HTTPS API,我們就扮演了「瀏覽器」的角色。我們的應用程式必須自己來驗證對方憑證是否安全可信。這樣做的目的是為了避免與偽造或遭竄改的伺服器通訊,防止中間人攻擊。文章最後會加碼說明:中間人攻擊是什麼?

那 Proxy 呢?不是中間人嗎?

Proxy(代理伺服器)如果是正向代理(Forward Proxy),它只是在你和目標伺服器之間轉發請求,TLS 仍是由你和目標伺服器建立,所以你仍然要驗證最終伺服器的憑證。

但如果是中介代理(如攔截型 Proxy 或防火牆),它可能會攔截你的 HTTPS 請求,然後自己與目標伺服器建立連線,再向你提供一份由它自己簽發的憑證。這就會導致憑證鏈出現「Untrusted Root」錯誤。

The remote certificate is invalid because of errors in the certificate chain: Untrusted Root

這表示中間那台 Proxy 給了你一張它自己簽發的憑證,但你的程式或系統並不信任這個簽發者。

🐻解法與實務做法

正確方式

將 Proxy 或公司內部憑證簽發單位的 Root CA 安裝到受信任根憑證存儲區中

  • Windows:使用 mmc 加載「受信任的根憑證授權機構」
  • Linux:加入到 /etc/ssl/certs 並執行 update-ca-certificates

危險但常見的方式

在 C# 中,你可能會看到這段程式碼:

HttpClientHandler handler = new()
{
ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
};

或者:

HttpClientHandler handler = new()
{
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true
};

這都會完全忽略憑證驗證,通常用來「臨時繞過」開發環境的錯誤。但千萬不要在正式環境中使用,這等於你關掉了 HTTPS 的保護網!

🐻結論

信任是由客戶端建立的

TLS 的精神就是:由連線發起端(我們)決定信任誰。所以不是對方設定錯了,而是我們沒有準備好信任它的憑證。

當你遇到憑證錯誤時,不妨先問問自己:

  • 這張憑證是誰發的?
  • 我們的程式或伺服器信任這個憑證簽發者嗎?
  • 是否有中間代理設備攔截了原始連線?

了解憑證驗證的責任歸屬,將幫助你更有信心處理各種 HTTPS 問題。

🐻加碼

中間人攻擊是什麼?

想像你坐在咖啡廳,透過 Wi-Fi 連上某個 HTTPS 網站(例如 https://bank.com),你輸入帳號密碼準備登入。此時,如果有駭客架設一台攔截設備(如假 Wi-Fi 熱點或公司網路的某種透明 Proxy),它可以:

  1. 攔截你的 HTTPS 連線請求
  2. 自己幫你連到真正的 bank.com
  3. 然後再把它「自製」的一張憑證發給你,試圖冒充成 bank.com

如果你的程式沒仔細驗證這張憑證(或用了 DangerousAcceptAnyServerCertificateValidator 這種忽略方式),你就會不知不覺地把帳號密碼送給駭客,而不是網站。

憑證驗證是阻擋 MITM 的最後防線,只要你的程式認真驗證憑證:

  • 它會發現駭客發給你的憑證不是由可信的 CA 簽發
  • 因此拒絕這次連線
  • 使用者資料就不會外洩

這也是為什麼 TLS 的驗證責任一定要落在「我們」身上。如果我們不驗證,就等於打開了防線,讓攻擊者有機可乘。

留言
avatar-img
留言分享你的想法!
avatar-img
IT熊的沙龍
0會員
4內容數
IT熊的沙龍是一個結合技術、創意與交流的空間,由熱愛程式與分享的「IT熊」主持。在這裡,你會看到最新的開發趨勢、實用的程式技巧、深入的技術解析,以及職涯與生活的輕鬆對談。 無論你是剛踏入程式世界的新手,還是經驗豐富的工程師,都歡迎進入 IT熊的沙龍,一起學習、分享、成長。
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
隨著企業對雲端技術的依賴日益加深,確保雲端環境中的應用程式安全變得至關重要。雲端原生應用程式防護平台(Cloud-Native Application Protection Platform,CNAPP)應運而生,旨在提供統一且全面的解決方案來保障雲端應用程式在整個生態
Thumbnail
隨著企業對雲端技術的依賴日益加深,確保雲端環境中的應用程式安全變得至關重要。雲端原生應用程式防護平台(Cloud-Native Application Protection Platform,CNAPP)應運而生,旨在提供統一且全面的解決方案來保障雲端應用程式在整個生態
Thumbnail
  自從之前發現被對岸網站盜文,就決定在文章中間或末端加上一些文字聲明。由於我連載的平台有好幾個,所以花了一些時間,把每一個平台的每一篇文全都加上聲明,想藉此查看盜文都是從哪個連載平台盜的﹙雖然本來我心裡就有底了,但總要有證據嘛﹚。   而且,因為怕盜文時設有自動屏蔽、替換功能,我還特地將文字聲明
Thumbnail
  自從之前發現被對岸網站盜文,就決定在文章中間或末端加上一些文字聲明。由於我連載的平台有好幾個,所以花了一些時間,把每一個平台的每一篇文全都加上聲明,想藉此查看盜文都是從哪個連載平台盜的﹙雖然本來我心裡就有底了,但總要有證據嘛﹚。   而且,因為怕盜文時設有自動屏蔽、替換功能,我還特地將文字聲明
Thumbnail
為什麼供應商在使用我們的API時,統一編號驗證會出錯?這個看似簡單的錯誤,竟然牽涉到財政部的新規則。我們如何發現並解決這個問題?新的檢查邏輯是如何影響我們的系統?本文將揭示背後的原因和解決過程。
Thumbnail
為什麼供應商在使用我們的API時,統一編號驗證會出錯?這個看似簡單的錯誤,竟然牽涉到財政部的新規則。我們如何發現並解決這個問題?新的檢查邏輯是如何影響我們的系統?本文將揭示背後的原因和解決過程。
Thumbnail
【駭入別人銷售漏斗,模仿驗證有效流程】
Thumbnail
【駭入別人銷售漏斗,模仿驗證有效流程】
Thumbnail
👨‍💻簡介 最近因為憑證越來越多,需要監控什麼時候到期,當到期時發送到期通知,因此撰寫一個簡單的小程式來完成。 這次使用Python和Telegram Bot來監控SSL證書的到期時間並發送通知。並使用GCP工具,如CloudFunction和CloudScheduler做部署平台。
Thumbnail
👨‍💻簡介 最近因為憑證越來越多,需要監控什麼時候到期,當到期時發送到期通知,因此撰寫一個簡單的小程式來完成。 這次使用Python和Telegram Bot來監控SSL證書的到期時間並發送通知。並使用GCP工具,如CloudFunction和CloudScheduler做部署平台。
Thumbnail
大約11點15分左右,突然臉書被登出,就無法登入了。本來一直以為是我密碼記錯,後來驚覺是不是帳號被盜。弄了大約半小時,還是無法登入。 . 後來就想說來看看「Threads」有沒有人反應,結果無法登入。 心想應該是災情了 來看看「IG」上怎麼說,也是無法登入。 . 還好谷歌沒當,搜尋
Thumbnail
大約11點15分左右,突然臉書被登出,就無法登入了。本來一直以為是我密碼記錯,後來驚覺是不是帳號被盜。弄了大約半小時,還是無法登入。 . 後來就想說來看看「Threads」有沒有人反應,結果無法登入。 心想應該是災情了 來看看「IG」上怎麼說,也是無法登入。 . 還好谷歌沒當,搜尋
Thumbnail
前幾天看到一則標題『貼牌的中國製智慧門鈴內含安全漏洞』,讓我想到以前寫過類似的故事,關於小型資訊公司與貼牌軟體漏洞的故事,也想重新整理思路當面對類似問題無論是開發公司或是購買軟體的公司該如何面對。
Thumbnail
前幾天看到一則標題『貼牌的中國製智慧門鈴內含安全漏洞』,讓我想到以前寫過類似的故事,關於小型資訊公司與貼牌軟體漏洞的故事,也想重新整理思路當面對類似問題無論是開發公司或是購買軟體的公司該如何面對。
Thumbnail
零信任機制強調不信任任何實體,要求在每個資源訪問上進行驗證,打破傳統資安模型信任內部網路的假設。
Thumbnail
零信任機制強調不信任任何實體,要求在每個資源訪問上進行驗證,打破傳統資安模型信任內部網路的假設。
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
Thumbnail
首先,這是一篇嘗試文,並不保證成效。僅說明,當時我學習的過程。
Thumbnail
首先,這是一篇嘗試文,並不保證成效。僅說明,當時我學習的過程。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News