Tls
為什麼客戶端需要證書
我想知道為什麼您需要客戶端的伺服器證書。你不能從 CA 本身獲取它嗎?我正在使用 mbedtls 對一些小型客戶端進行程式,並且在所有客戶端範例中,它們都使用伺服器的證書。但是,如果您需要指定伺服器證書才能與其建立連接,那麼瀏覽器如何能夠驗證所有安全網站?我認為他們沒有硬編碼所有伺服器的所有證書(這當然不可能,因為每天都會出現新的安全網站)
我認為您在 mbedTLS ssl_client1 範例中混淆了某些內容。該範例未指定伺服器證書,而是指定 CA(證書頒發機構)證書。客戶端將 CA 證書載入到其 CA 鏈中。稍後它仍然從伺服器請求證書(ssl_handshake 步驟)並使用 CA 證書中的公鑰來驗證它從伺服器收到的證書。
TLS 握手的一部分是伺服器在建立安全連接之前向客戶端發送其證書。客戶端應驗證證書是否有效,例如檢查 CA 是否確實簽署了證書,是否沒有被撤銷/過期等。
從 CA 獲取證書沒有多大意義,因為伺服器 (1) 需要告訴您 CA 是誰,然後您 (2) 必須向 CA 提出請求以獲取證書,然後您 ( 3)必鬚髮出請求和(4)等待響應。如果伺服器發送自己的證書會容易得多:它更省時,同時它並不比直接從 CA 請求它更安全(因為上述檢查)。