Skip to content

Bun soporta TLS fuera de caja, impulsado por BoringSSL. Habilita TLS pasando un valor para key y cert; ambos son requeridos para habilitar TLS.

ts
Bun.serve({
  tls: {
    key: Bun.file("./key.pem"), 
    cert: Bun.file("./cert.pem"), 
  },
});

Los campos key y cert esperan el contenido de tu clave TLS y certificado, no una ruta a ellos. Esto puede ser una cadena, BunFile, TypedArray o Buffer.

ts
Bun.serve({
  tls: {
    key: Bun.file("./key.pem"), // BunFile
    key: fs.readFileSync("./key.pem"), // Buffer
    key: fs.readFileSync("./key.pem", "utf8"), // cadena
    key: [Bun.file("./key1.pem"), Bun.file("./key2.pem")], // array de lo anterior
  },
});

Frase de Contraseña

Si tu clave privada está cifrada con una frase de contraseña, proporciona un valor para passphrase para descifrarla.

ts
Bun.serve({
  tls: {
    key: Bun.file("./key.pem"),
    cert: Bun.file("./cert.pem"),
    passphrase: "mi-frase-secreta", 
  },
});

Certificados CA

Opcionalmente, puedes sobrescribir los certificados CA de confianza pasando un valor para ca. Por defecto, el servidor confiará en la lista de CAs bien conocidos curada por Mozilla. Cuando ca se especifica, la lista de Mozilla se sobrescribe.

ts
Bun.serve({
  tls: {
    key: Bun.file("./key.pem"), // ruta a la clave TLS
    cert: Bun.file("./cert.pem"), // ruta al certificado TLS
    ca: Bun.file("./ca.pem"), // ruta al certificado CA raíz
  },
});

Diffie-Hellman

Para sobrescribir los parámetros de Diffie-Hellman:

ts
Bun.serve({
  tls: {
    dhParamsFile: "/ruta/a/dhparams.pem", // ruta a los parámetros de Diffie Hellman
  },
});

Indicación de Nombre del Servidor (SNI)

Para configurar la indicación de nombre del servidor (SNI) para el servidor, establece el campo serverName en el objeto tls.

ts
Bun.serve({
  tls: {
    serverName: "mi-servidor.com", // SNI
  },
});

Para permitir múltiples nombres de servidor, pasa un array de objetos a tls, cada uno con un campo serverName.

ts
Bun.serve({
  tls: [
    {
      key: Bun.file("./key1.pem"),
      cert: Bun.file("./cert1.pem"),
      serverName: "mi-servidor1.com", 
    },
    {
      key: Bun.file("./key2.pem"),
      cert: Bun.file("./cert2.pem"),
      serverName: "mi-servidor2.com", 
    },
  ],
});

Bun por www.bunjs.com.cn editar