為什麼當有多個憑證時瀏覽器知道要使用哪個憑證?

為什麼當有多個憑證時瀏覽器知道要使用哪個憑證?

我對伺服器和網路世界非常陌生,我希望問題很清楚並且不會那麼微不足道。我最近遇到了以下場景:

  1. 有一個根證書 A,幾個月後就會過期。還有另一個新的根憑證 B,旨在取代 A。 A 的 CA 受新舊瀏覽器/作業系統信任,而 B 的 CA 僅受現代瀏覽器/作業系統信任

  2. 我們的伺服器目前正在使用一個交叉憑證 A->B(B 由 A 簽署)。但由於 A 即將過期,我們應用了另一個交叉憑證 C->B(B 由 C 簽名,C 的 CA 受到新舊瀏覽器/作業系統的信任)作為替代。

  3. 現在,在UAT環境中,我們更新憑證C->B,對於客戶端,我嘗試使用一些舊版瀏覽器進行測試,我驗證了僅A的CA和C的CA是可信的,而B的CA不可信。對於 PROD 環境,我們保持不變,即使用憑證 A->B

  4. 我使用提到的瀏覽器訪問UAT站點,並驗證使用的憑證是A->B,這是第一次。令人驚訝的是,隨後造訪 UAT 和 PROD 網站時,使用的憑證是 C->B(在客戶端檢查)。

我的問題是,這是正常行為嗎?為什麼客戶端從第一次造訪UAT站點起就「知道」使用C->B?我還用來openssl s_client驗證 PROD 伺服器是否仍在使用 A->B。瀏覽器如何知道要使用哪個憑證並相應地「更新」憑證?

編輯於 2022 年 12 月 13 日

  1. 我們的主要目的是支援非常舊的瀏覽器/作業系統和現代瀏覽器/作業系統。即即使憑證 A 過期,所有瀏覽器都可以成功存取我們的網站。
  2. 我認為我的主要問題或問題是,如果以下情況屬實:
  • 舊瀏覽器,第一次造訪UAT站點,由於某些快取機制,顯示伺服器正在使用憑證A->B
  • 第一次造訪 UAT 網站後,伺服器實際上將新憑證 C->B「推送」到伺服器中配置的用戶端。現在,瀏覽器甚至作業系統層級都承認最新的憑證是 C->B,而不是 A->B。
  • 儘管 C->B 已被確認,但憑證 A->B 仍保存在瀏覽器/作業系統中。但瀏覽器以某種方式知道要使用較新的憑證 C->B 進行驗證。意味著我們的目的可以達到。

答案1

回答你的問題嗎?

從連結中,您可能需要清除瀏覽器快取/SSL 狀態:

Web 瀏覽器快取 SSL 憑證以加快瀏覽體驗。通常,這不是問題。但是,當您為網站開發頁面或安裝新憑證時,瀏覽器的 SSL 狀態可能會產生妨礙。例如,安裝新的 SSL 憑證後,您可能不會在瀏覽器網址列中看到掛鎖圖示。

相關內容