运行时包管理器打包器测试运行器代码检查格式化指南参考博客反馈

TLS

在 Bun.serve 中启用 TLS

Bun 内置了 TLS 支持,由 BoringSSL 提供支持。要启用 TLS,请同时传入 key 和 cert。

TypeScript
Bun.serve({
  tls: {
    key: Bun.file("./key.pem"), // [!code ++]
    cert: Bun.file("./cert.pem"), // [!code ++]
  },
});

key 和 cert 字段需要的是 TLS 密钥和证书的_内容_,而_不是文件路径_。每个字段都可以是字符串、BunFile、TypedArray、Buffer 或由这些类型组成的数组。Bun 只会使用数组中的最后一组密钥/证书;要提供多个证书,请传入一个 tls 对象数组,每个对象都包含一个 serverName(参见下方的 服务器名称指示(SNI))。

TypeScript
Bun.serve({
  tls: {
    key: Bun.file("./key.pem"), // BunFile
    key: fs.readFileSync("./key.pem"), // Buffer
    key: fs.readFileSync("./key.pem", "utf8"), // string
    key: [Bun.file("./key1.pem"), Bun.file("./key2.pem")], // 上述类型的数组
  },
});

密码短语

如果您的私钥使用密码短语加密,请提供 passphrase 以解密。

TypeScript
Bun.serve({
  tls: {
    key: Bun.file("./key.pem"),
    cert: Bun.file("./cert.pem"),
    passphrase: "my-secret-passphrase", // [!code ++]
  },
});

CA 证书

传入 ca 可以覆盖受信任的 CA 证书。默认情况下,服务器信任由 Mozilla 整理的知名 CA 列表;设置 ca 后将替换该列表。

TypeScript
Bun.serve({
  tls: {
    key: Bun.file("./key.pem"), // TLS 密钥路径
    cert: Bun.file("./cert.pem"), // TLS 证书路径
    ca: Bun.file("./ca.pem"), // 根 CA 证书路径  // [!code ++]
  },
});

Diffie-Hellman

要覆盖 Diffie-Hellman 参数:

TypeScript
Bun.serve({
  tls: {
    dhParamsFile: "/path/to/dhparams.pem", // Diffie-Hellman 参数路径 // [!code ++]
  },
});

服务器名称指示(SNI)

要为服务器配置服务器名称指示(SNI),在 tls 对象中设置 serverName 字段。

TypeScript
Bun.serve({
  tls: {
    serverName: "my-server.com", // SNI // [!code ++]
  },
});

要允许使用多个服务器名称,请向 tls 传入一个包含多个对象的数组,每个对象都包含一个 serverName 字段。

TypeScript
Bun.serve({
  tls: [
    {
      key: Bun.file("./key1.pem"),
      cert: Bun.file("./cert1.pem"),
      serverName: "my-server1.com", // [!code ++]
    },
    {
      key: Bun.file("./key2.pem"),
      cert: Bun.file("./cert2.pem"),
      serverName: "my-server2.com", // [!code ++]
    },
  ],
});