Bun поддерживает TLS из коробки благодаря BoringSSL. Включите TLS передав значения для key и cert; оба требуются для включения TLS.
Bun.serve({
tls: {
key: Bun.file("./key.pem"),
cert: Bun.file("./cert.pem"),
},
});Поля key и cert ожидают содержимое вашего TLS-ключа и сертификата а не путь к ним. Это может быть строка BunFile TypedArray или 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")], // массив вышеуказанного
},
});Passphrase
Если ваш закрытый ключ зашифрован с помощью парольной фразы предоставьте значение для passphrase для его расшифровки.
Bun.serve({
tls: {
key: Bun.file("./key.pem"),
cert: Bun.file("./cert.pem"),
passphrase: "my-secret-passphrase",
},
});CA сертификаты
При необходимости вы можете переопределить доверенные CA-сертификаты передав значение для ca. По умолчанию сервер доверяет списку известных CA собранных Mozilla. Когда ca указан список Mozilla перезаписывается.
Bun.serve({
tls: {
key: Bun.file("./key.pem"), // путь к TLS-ключу
cert: Bun.file("./cert.pem"), // путь к TLS-сертификату
ca: Bun.file("./ca.pem"), // путь к корневому CA-сертификату
},
});Diffie-Hellman
Для переопределения параметров Diffie-Hellman:
Bun.serve({
tls: {
dhParamsFile: "/path/to/dhparams.pem", // путь к параметрам Diffie-Hellman
},
});Индикация имени сервера (SNI)
Для настройки индикации имени сервера (SNI) для сервера установите поле serverName в объекте tls.
Bun.serve({
tls: {
serverName: "my-server.com", // SNI
},
});Для разрешения нескольких имён серверов передайте массив объектов в tls каждый с полем 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",
},
],
});