O Bun suporta TLS nativamente, powered por BoringSSL. Habilite TLS passando um valor para key e cert; ambos são necessários para habilitar TLS.
Bun.serve({
tls: {
key: Bun.file("./key.pem"),
cert: Bun.file("./cert.pem"),
},
});Os campos key e cert esperam o conteúdo da sua chave TLS e certificado, não um caminho para eles. Isto pode ser uma string, BunFile, TypedArray, ou Buffer.
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")], // array dos acima
},
});Passphrase
Se sua private key é encriptada com uma passphrase, forneça um valor para passphrase para decriptá-la.
Bun.serve({
tls: {
key: Bun.file("./key.pem"),
cert: Bun.file("./cert.pem"),
passphrase: "my-secret-passphrase",
},
});CA Certificates
Opcionalmente, você pode sobrescrever os certificados CA confiáveis passando um valor para ca. Por padrão, o servidor confiará na lista de CAs bem conhecidas curada pela Mozilla. Quando ca é especificado, a lista da Mozilla é sobrescrita.
Bun.serve({
tls: {
key: Bun.file("./key.pem"), // caminho para chave TLS
cert: Bun.file("./cert.pem"), // caminho para certificado TLS
ca: Bun.file("./ca.pem"), // caminho para certificado root CA
},
});Diffie-Hellman
Para sobrescrever os parâmetros Diffie-Hellman:
Bun.serve({
tls: {
dhParamsFile: "/path/to/dhparams.pem", // caminho para parâmetros Diffie Hellman
},
});Server Name Indication (SNI)
Para configurar o server name indication (SNI) para o servidor, defina o campo serverName no objeto tls.
Bun.serve({
tls: {
serverName: "my-server.com", // SNI
},
});Para permitir múltiplos server names, passe um array de objetos para tls, cada um com um campo serverName.
Bun.serve({
tls: [
{
key: Bun.file("./key1.pem"),
cert: Bun.file("./cert1.pem"),
serverName: "my-server1.com",
},
{
key: Bun.file("./key2.pem"),
cert: Bun.file("./cert2.pem"),
serverName: "my-server2.com",
},
],
});