Ssl

我應該為客戶端證書/mTLS 使用公共 CA 還是內部 CA?

  • July 24, 2022

我正在為相互身份驗證 (mTLS) 配置 Azure 應用網關。這個問題更普遍地是關於何時以及何時不使用公共 CA 與內部 CA 進行客戶端證書/相互身份驗證/mTLS。這裡的案例是允許從特定客戶端到特定伺服器的私有 API 流量。

相互身份驗證的配置要求我使用串聯的中間證書和根證書配置伺服器的 SSL 配置文件,以在 TLS 握手期間驗證客戶端證書。我最初購買了 DigiCert 客戶端證書,這意味著伺服器端接收 DigiCert 中間證書和根證書進行驗證。這對我的案例來說感覺不對。

使用此設置,這是否會接受來自該 DigCert CA 鏈的任何證書?(大概是相當多的客戶端證書!)我的意圖是限制對特定客戶端(+冗餘/DR客戶端)的訪問。如果我在以這種方式配置時查看 openssl 握手的輸出,我可以看到我的伺服器正在指定它將接受的公共中間證書和根證書,從而提示有人可以去哪裡購買證書工作。

如果我是正確的,那麼減少伺服器客戶端身份驗證將接受的客戶端/證書數量的適當方法是什麼?頒發證書的內部 CA,還是其他?

可以使用多個選項配置 Azure 應用程序網關以進行相互身份驗證。

  • 應用程序網關可以配置為信任單個證書。
  • 應用程序網關可以配置為信任直接頒發者並信任該 CA 頒發的所有葉證書。

您使用什麼選項取決於您。但是,當您選擇第二個身份驗證選項,並且直接頒發者不是您控制的 CA 時,您無法控制能夠在應用程序網關上進行身份驗證的內容。

來自文件的來源:

應用程序網關支持基於證書的相互身份驗證,您可以將受信任的客戶端 CA 證書上傳到應用程序網關,網關將使用該證書對向網關發送請求的客戶端進行身份驗證。

和:

您可以選擇驗證客戶端證書的直接頒發者,並且只允許應用程序網關信任該頒發者。此選項預設關閉,但您可以通過門戶、PowerShell 或 Azure CLI 啟用此選項。

引用自:https://serverfault.com/questions/1106443