執行環境套件管理器打包器測試執行器程式碼檢查格式化指南參考部落格意見回饋

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 ++]
    },
  ],
});