certifikat.nu08-400 274 60

Node.js

Installera SSL i
Node.js

Två sätt: direkt TLS-terminering i Node med https/http2-modulerna, eller — vanligast i produktion — Node bakom Nginx som hanterar TLS.

Node.js har inbyggt stöd för TLS via https- och http2-modulerna. För produktionsmiljöer rekommenderar vi dock att låta Nginx eller Traefik terminera TLS och proxa till Node — det förenklar förnyelse, prestanda och säkerhet.

Så installerar du steg för steg

  1. 01

    Skaffa certifikat och privat nyckel

    Antingen från en CA (köpta) eller via certbot/acme.sh. Spara dem på säker plats utanför projektmappen, t.ex. /etc/ssl/dittforetag/.

  2. 02

    Alternativ A: HTTPS direkt i Node

    Minimal Express-server med TLS:

    import https from 'node:https';
    import fs from 'node:fs';
    import express from 'express';
    
    const app = express();
    app.get('/', (_req, res) => res.send('Hello over HTTPS'));
    
    const options = {
      key:  fs.readFileSync('/etc/ssl/dittforetag/privkey.pem'),
      cert: fs.readFileSync('/etc/ssl/dittforetag/fullchain.pem'),
    };
    
    https.createServer(options, app).listen(443);
  3. 03

    Alternativ B: HTTP/2 i Node 22

    Använd inbyggda http2-modulen för bättre prestanda:

    import http2 from 'node:http2';
    import fs from 'node:fs';
    
    const server = http2.createSecureServer({
      key:  fs.readFileSync('/etc/ssl/dittforetag/privkey.pem'),
      cert: fs.readFileSync('/etc/ssl/dittforetag/fullchain.pem'),
      allowHTTP1: true,
    });
    server.on('request', (req, res) => {
      res.writeHead(200); res.end('Hello over HTTP/2');
    });
    server.listen(443);
  4. 04

    Alternativ C: Node bakom Nginx (rekommenderat)

    Låt Nginx terminera TLS och proxa till Node på port 3000. Se vår Nginx-guide och lägg till:

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
  5. 05

    Lyssna inte direkt på port 443 som root

    Använd setcap eller låt Nginx terminera. Aldrig sudo node app.js i produktion.

  6. 06

    Auto-förnyelse

    Med Let's Encrypt: certbot --webroot eller acme.sh. Node måste reloadas efter förnyelse — använd PM2 graceful reload eller systemd reload hooks.

Vanliga frågor

Ska Node.js terminera TLS själv eller köra bakom Nginx?

I produktion: nästan alltid bakom Nginx eller Traefik. Det ger bättre prestanda, lättare certifikatförnyelse och centraliserad headers/HSTS. Direkt TLS i Node är OK för enkla setups eller microservices i privat nät.

Hur använder jag HTTP/2 i Node.js?

Använd inbyggda 'http2'-modulen istället för 'https'. ALPN-förhandling kräver Node 10.10+ och certifikat med korrekt SAN.

Var lägger jag privata nyckeln i Express-appar?

Aldrig i git. Använd miljövariabler eller en secret manager. Läs filerna från disk vid start (fs.readFileSync) och håll dem utanför projektmappen.

Läs vidare

Vill du att vi installerar åt dig?

Vi installerar och konfigurerar ditt SSL-certifikat på din miljö — du behöver inte röra något själv. Ingår utan extra kostnad vid köp.

  • Svensk teknisk support
  • Installation ingår
  • Övervakning & utgångsalert
  • Auto-förnyelse via ACME