Hyperdrive 提供额外方式保护与数据库的连接。Hyperdrive 支持:
- 服务器证书,用于
verify-ca/VERIFY_CA和verify-full/VERIFY_IDENTITY等 TLS(SSL)模式以增强安全性。配置后,Hyperdrive 将验证证书是否由预期的证书颁发机构(CA)签名,以防止中间人攻击。 - 客户端证书,使 Hyperdrive 使用用户名/密码之外的凭据向数据库进行身份验证。要正确使用客户端证书,数据库必须配置为验证客户端(如 Hyperdrive)提供的证书以允许访问数据库。
Hyperdrive 可根据安全要求和数据库配置,仅使用服务器证书、仅使用客户端证书,或两者同时使用。
Hyperdrive 支持常见的加密 TLS/SSL 模式连接数据库。PostgreSQL 与 MySQL 的模式名称不同:
| PostgreSQL | MySQL | 描述 |
|---|---|---|
require(默认) |
REQUIRED(默认) |
连接需要 TLS 以进行加密,并验证服务器证书(基于 WebPKI)。 |
verify-ca |
VERIFY_CA |
Hyperdrive 将通过验证服务器证书是否由预期的根证书颁发机构或中间证书颁发机构签名,来验证数据库服务器是否可信。 |
verify-full |
VERIFY_IDENTITY |
除 verify-ca/VERIFY_CA 检查外,Hyperdrive 还要求数据库主机名与证书上的 Subject Alternative Name(SAN)或 Common Name(CN)匹配。 |
默认情况下,所有 Hyperdrive 配置均使用 SSL/TLS(require/REQUIRED)加密。这要求数据库配置为接受加密连接(使用 SSL/TLS)。
可将 Hyperdrive 配置为使用 verify-ca/VERIFY_CA 和 verify-full/VERIFY_IDENTITY 以获得更严格的安全配置,这些模式对服务器证书提供额外验证检查,有助于防范中间人攻击。
要配置 Hyperdrive 验证服务器证书,必须向 Hyperdrive 提供根证书颁发机构(CA)或用于签名数据库证书的 intermediate 证书。
使用 Wrangler 上传根证书颁发机构(CA)证书:
# requires Wrangler 4.9.0 or greater
npx wrangler cert upload certificate-authority --ca-cert \<ROUTE_TO_CA_PEM_FILE\>.pem --name \<CUSTOM_NAME_FOR_CA_CERT\>
---
Uploading CA Certificate tmp-cert...
Success! Uploaded CA Certificate <CUSTOM_NAME_FOR_CA_CERT>
ID: <YOUR_ID_FOR_THE_CA_CERTIFICATE>
...CA 证书创建后,可使用仪表板或 Wrangler 创建包含新证书的 Hyperdrive 配置。还必须指定要使用的 SSL 模式(PostgreSQL 为 verify-ca/verify-full,MySQL 为 VERIFY_CA/VERIFY_IDENTITY)。
使用 Wrangler,在终端输入以下命令,使用 CA 证书和 SSL 模式创建 Hyperdrive 配置:
# PostgreSQL with verify-full
npx wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string="postgres://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name" --ca-certificate-id <YOUR_CA_CERT_ID> --sslmode verify-full
# MySQL with VERIFY_IDENTITY
npx wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string="mysql://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name" --ca-certificate-id <YOUR_CA_CERT_ID> --sslmode VERIFY_IDENTITY在仪表板中,按以下步骤使用服务器证书创建 Hyperdrive 配置:
-
在 Cloudflare 仪表板中,前往 Hyperdrive 页面。
Go to Hyperdrive ↗ -
选择 Create configuration(创建配置)。
-
选择 Server certificates(服务器证书)。
-
指定 SSL 模式为 Verify CA 或 Verify full。
-
选择你先前使用 Wrangler 上传的数据库证书颁发机构(CA)的 SSL 证书。
创建 Hyperdrive 配置时,Hyperdrive 将尝试使用提供的凭据连接数据库。若命令返回成功结果,说明已正确配置 Hyperdrive 以验证数据库服务器提供的证书。
数据库可配置为验证客户端(此处为 Hyperdrive)提供的证书。这作为用户名和密码之外的额外身份验证因素。请参阅 PostgreSQL ↗ 或 MySQL ↗ 文档了解更多详情。
为使数据库服务器能够验证客户端证书,Hyperdrive 必须配置为提供证书文件(client-cert.pem)和生成该证书的私钥(private-key.pem)。
使用 Wrangler 上传 Hyperdrive 使用的客户端证书:
# requires Wrangler 4.9.0 or greater
npx wrangler cert upload mtls-certificate --cert client-cert.pem --key client-key.pem --name <CUSTOM_NAME_FOR_CLIENT_CERTIFICATE>
---
Uploading client certificate <CUSTOM_NAME_FOR_CLIENT_CERTIFICATE>...
Success! Uploaded client certificate <CUSTOM_NAME_FOR_CLIENT_CERTIFICATE>
ID: <YOUR_ID_FOR_THE_CLIENT_CERTIFICATE_PAIR>
...现在可使用仪表板或 Wrangler,使用新创建的客户端证书包创建 Hyperdrive 配置。
使用 Wrangler,在终端输入以下命令,使用客户端证书对创建 Hyperdrive 配置:
# PostgreSQL
npx wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string="postgres://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name" --mtls-certificate-id <YOUR_CLIENT_CERT_PAIR_ID>
# MySQL
npx wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string="mysql://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name" --mtls-certificate-id <YOUR_CLIENT_CERT_PAIR_ID>在仪表板中,按以下步骤使用服务器证书创建 Hyperdrive 配置:
-
在 Cloudflare 仪表板中,前往 Hyperdrive 页面。
Go to Hyperdrive ↗ -
选择 Create configuration(创建配置)。
-
选择 Client certificates(客户端证书)。
-
选择 Hyperdrive 在与数据库服务器建立连接时使用的 SSL 客户端证书和私钥对。
Hyperdrive 连接数据库时,将使用私钥签名的客户端证书提供给数据库服务器。这使数据库服务器能够确认客户端(此处为 Hyperdrive)同时拥有私钥和客户端证书。通过使用客户端证书,可为数据库添加额外的身份验证层,确保只有 Hyperdrive 可以连接。