TLS/SSL 憑證
前言
通常會希望使用 TLS 連線 (也稱為 SSL 連線) 以避免「中間人」攻擊。Godot 有一個連線封裝器 StreamPeerTLS,它可以接受一個常規連線並為其增加安全層。HTTPClient 和 HTTPRequest 類別也支援使用同一個封裝器的 HTTPS。
Godot 會優先使用作業系統提供的 TLS 憑證包,若無則會使用內建的 Mozilla TLS 憑證(<https://github.com/godotengine/godot/blob/master/thirdparty/certs/ca-certificates.crt>)。
你也可以在專案設定裡強制指定自己的憑證包:
設定 TLS 憑證包覆蓋專案選項
設定此選項時,會*覆蓋*作業系統的預設憑證包。此檔案需包含任意數量的公開憑證,格式為 PEM。
獲取憑證有兩種方式:
產生自簽名憑證
大多數情境建議直接用 CA(如 Let's Encrypt),因為免費又簡單。但若無法用 CA,可自行產生自簽名憑證,並在用戶端信任該憑證。
建立自簽名憑證時,請產生一組私鑰/公鑰,將公鑰(PEM 格式)加入專案設定中的 CRT 檔。
警告
私鑰必須**僅存放於伺服器**,切勿放入用戶端,否則憑證安全性會被破壞。
警告
當你把自簽名憑證指定為 TLS 憑證包後,Godot 仍會檢查憑證的 CN(通用名稱) 與替代名稱以驗證網域。詳見 TLSOptions 可自訂驗證規則。
開發階段可用 Crypto.generate_self_signed_certificate 讓 Godot 直接產生自簽名憑證。