Security

相互 SSL 身份驗證 - 客戶端證書與伺服器證書

  • March 15, 2016

我正在設置一個 Web 應用程序,它將連接到遠端 Web 服務並且需要使用客戶端證書。我的 Web 應用程序使用 HTTPS 進行連接,並且我已經為我的域配置了我現有的萬用字元證書。

我可以使用萬用字元證書中的公鑰作為我的客戶端證書嗎?我需要將其提供給遠端 Web 服務管理員,以便他們可以將其添加到受信任的客戶端證書列表中。

使用我的萬用字元的公鑰作為我的客戶端證書有什麼缺點嗎?如果我不能/不應該這樣做,我可以使用什麼樣的證書來代替?

一個缺點是您的私鑰現在可能在兩台機器上。

根據定義,客戶端密鑰應該是私有的。如果它是共享的,那麼它就不是私有的。

這會立即降低任何人對您的證書的信任。該伺服器的所有其他使用者(如果有的話)現在不能信任它,因為它的私鑰已知是共享的。

您的問題沒有說明您是使用自己的 CA 還是商業 CA。如果它是商業的,您可能會通過共享私鑰來違反 CA 的條款和條件。

最好是簡單地為您的客戶創建另一個證書。如果您正在執行自己的 CA,只需創建另一個證書。如果它是商業的,請為您的客戶購買新證書或免費獲得一個。無論哪種方式,如果您的證書將具有擴展密鑰使用欄位,請確保它包含“客戶端身份驗證”(而不是“伺服器身份驗證”)。

正如您所澄清的,您的設置是一台充當客戶端和伺服器的機器。在這種情況下,您需要注意伺服器身份驗證和客戶端身份驗證的證書配置文件的細微差別:

伺服器證書將伺服器的 DNS 名稱作為 CommonName (CN) 或 Subject Alternate Name (SAN),或兩者兼而有之。客戶端證書通常會將您的電子郵件地址作為 CN,儘管沒有理由它不能是其他任何東西。

伺服器證書的擴展密鑰使用擴展應該是server authentication,而對於客戶端證書它應該是client authentication。這可能會導致問題。

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