Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
TLS/SSL 证书
介绍
我们通常希望在通信时使用 TLS 连接(也叫 SSL 连接),从而避免“中间人”攻击。Godot 提供了一个连接封装,StreamPeerTLS,它可以接纳一个普通连接并为其增加安全性。HTTPClient 和 HTTPRequest 等类也通过使用这一封装来支持 HTTPS。
Godot 会尝试使用操作系统提供的 TLS 证书捆绑包,但同时也包含了 Mozilla 的 TLS 证书捆绑包作为回退。
你也可以在项目设置中强制使用自己的证书捆绑包:
设置 TLS 证书捆绑包覆盖项目设置
设置后,该文件默认会覆盖操作系统提供的捆绑包。该文件中应包含任意数量 PEM 格式的公共证书。
获取证书有两种方法:
生成自签名证书
对于大多数使用场景,建议通过证书颁发机构(CA)来处理,因为像 Let's Encrypt 这样的证书颁发机构提供免费的服务。但是,如果使用证书颁发机构不是一个选项,那么你可以生成自签名证书,并告诉客户端将你的自签名证书视为可信证书。
创建自签名证书的方法是:生成一对私钥和公钥,然后将(PEM 格式的)公钥添加到项目设置中指定的 CRT 文件中。
警告
私钥应该只部署到你的服务器上。客户端必须无法访问它:否则,证书的安全性将会被破坏。
警告
在项目设置中将自签名证书指定为 TLS 捆绑包时,会通过证书的 CN 和备用名称强制执行常规的域名验证。有关自定义域名验证的信息,请参阅 TLSOptions。
出于开发目的,Godot 可以通过 Crypto.generate_self_signed_certificate 生成自签名证书。