Bun soporta TLS fuera de caja, impulsado por BoringSSL. Habilita TLS pasando un valor para key y cert; ambos son requeridos para habilitar TLS.
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.
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.
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.
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:
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.
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.
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",
},
],
});