SSL-certifikat får vara giltiga i högst 199 dagar. Senast 2027-03-15 blir gränsen 99 dagar, för DigiCert-certifikat redan från 2027-02-24. Läs mer →
Svensk support på svenska, vardagar 10:00-16:00 +46 10 101 03 34 info@fairssl.se

Fortinet ACME-certifikat: FortiGate, FortiMail och FortiWeb

FortiOS 7.6.3 och senare har en inbyggd ACME-klient med External Account Binding (EAB), så att FortiGate själv kan hämta och förnya certifikat från FairSSL. Äldre FortiOS-versioner behöver en extern proxyserver med Lego eller simple-acme som för över certifikatet via SSH. Guiden beskriver båda metoderna.

Versioner som stöds

FortiGateVersionerFortiOS 7.6.3 och senareKörs påEnheten självACME-klientEnhetens inbyggda ACME-klient med EAB
FortiGateVersionerFortiOS före 7.6.3Körs påWindows Server 2016 eller senare, eller 2012/2012 R2 med WMF 5.1 (PowerShell 5.1)ACME-klientsimple-acme 2.4.0+ (FairSSL-utgåvan, .NET 10 ingår) + Posh-SSH, CredentialManager
FortiGateVersionerFortiOS före 7.6.3Körs påEn Linux-server som skickar certifikatet till enhetenACME-klientlego 5.0.4+
FortiMailVersionerGuiden sätter ingen versionsgränsKörs påWindows Server 2016 eller senare, eller 2012/2012 R2 med WMF 5.1 (PowerShell 5.1)ACME-klientsimple-acme 2.4.0+ (FairSSL-utgåvan, .NET 10 ingår) + Posh-SSH, CredentialManager
FortiMailVersionerGuiden sätter ingen versionsgränsKörs påEn Linux-server som skickar certifikatet till enhetenACME-klientlego 5.0.4+
FortiWebVersionerGuiden sätter ingen versionsgränsKörs påWindows Server 2016 eller senare, eller 2012/2012 R2 med WMF 5.1 (PowerShell 5.1)ACME-klientsimple-acme 2.4.0+ (FairSSL-utgåvan, .NET 10 ingår) + FortiWeb REST API, CredentialManager

Vilken metod ska du välja?

Rekommenderas FortiOS 7.6.3+

Inbyggd ACME på FortiGate

FortiGate kör ACME-klienten själv. Du skapar ett lokalt certifikatobjekt med EAB-nycklar, och FortiOS sköter utfärdande och automatisk förnyelse. Ingen extra server behövs.

Till inbyggd ACME →
Reservlösning Versioner före 7.6.3

Proxy med Lego eller simple-acme

En liten Linux- eller Windows-server utfärdar certifikatet och för över det till FortiGate via SSH eller REST API. Samma lösning fungerar även för FortiMail och för FortiWeb-versioner utan inbyggd ACME.

Till proxy-lösningen →

Inbyggd ACME (FortiOS 7.6.3+)

FortiGates inbyggda ACME-klient stöder External Account Binding, som krävs för att hämta certifikat från FairSSL. Allt konfigureras i CLI.

Steg 1: Kontrollera FortiOS-versionen

Logga in på FortiGate via SSH eller konsolen i webbgränssnittet och kontrollera versionen. EAB kräver FortiOS 7.6.3 eller senare.

get system status

Steg 2: Konfigurera FairSSL AutoDNS

Logga in på din FairSSL-kontrollpanel, gå till AutoDNS och skapa en CNAME-post för _dnsauth.<din-domän> som pekar på FairSSL:s DNS-server. AutoDNS svarar på ACME-utmaningen, så FortiGate behöver inte öppna port 80 mot internet. Läs mer i AutoDNS-guiden.

Steg 3: Skapa det lokala ACME-certifikatobjektet

Hämta EAB KID och HMAC-nyckeln från ACME-fliken i din FairSSL-kontrollpanel. Byt ut värdena nedan och kör kommandona i FortiGate CLI.

config vpn certificate local
    edit "fairssl-vpn-cert"
        set enrollment acme
        set acme-ca-url https://fairssl.dk/acme
        set acme-eab-key-id DIN_EAB_KID
        set acme-eab-key-hmac DIN_EAB_HMAC
        set acme-email acme-client@fairssl.dk
        set acme-domain vpn.exempel.se
        set acme-auth-url "http://vpn.exempel.se/.well-known/acme-challenge"
        set auto-regenerate-days 30
        set auto-regenerate enable
    next
end

auto-regenerate-days 30 innebär att FortiGate börjar förnya 30 dagar före utgångsdatum. Det räcker både för dagens maximala livslängd på 199 dagar och för 99 dagar från 15 mars 2027. Sätt acme-domain till exakt det FQDN som certifikatet ska utfärdas för. FortiGates inbyggda ACME hanterar ett enda FQDN, så använd proxy-lösningen för wildcard eller flera SAN.

Steg 4: Utfärda certifikatet

execute vpn certificate local generate "fairssl-vpn-cert"

FortiGate kontaktar FairSSL:s ACME-server, validerar via AutoDNS att du äger domänen och hämtar certifikatet. Det tar normalt under 30 sekunder.

Steg 5: Kontrollera status

get vpn certificate local | grep -A 3 "fairssl-vpn-cert"

Du ska se Status: OK och en giltighetsperiod som stämmer med certifikatets livslängd (högst 199 dagar, högst 99 dagar från 15 mars 2027).

Steg 6: Koppla certifikatet till tjänster

Använd det lokala certifikatobjektet för SSL VPN, admin HTTPS eller andra tjänster. Du kan koppla samma objekt till flera tjänster, och alla bindningar får det förnyade certifikatet automatiskt.

# SSL VPN
config vpn ssl settings
    set servercert "fairssl-vpn-cert"
end

# Admin HTTPS (valfritt)
config system global
    set admin-server-cert "fairssl-vpn-cert"
end

Kontrollera sedan med FairSSL:s SSL-skanner att det publika FQDN svarar med rätt certifikat.

Proxy-lösning (FortiGate < 7.6.3, FortiMail, FortiWeb)

När enheten inte kan köra ACME själv utfärdas certifikatet på en separat Linux- eller Windows-server och förs över via SSH eller REST API. Linux-varianten med Lego är mest flexibel och används även för FortiMail och FortiWeb.

Linux-server med Lego och SSH

En liten Linux-server (Debian, Ubuntu eller RHEL) utfärdar certifikatet med Lego och för över PEM-filerna till FortiGate via SSH med sshpass. Kommandona nedan kräver Lego v5.0.4 eller senare. Tidiga v5-versioner hade problem med registrering och hooks, och kommandona för v4 ser annorlunda ut, så använd v5.0.4+.

# 1. Installera Lego och sshpass

arch=$(dpkg --print-architecture)
case "$arch" in amd64|arm64) ;; *) echo "Byt arch"; exit 1 ;; esac
version=$(curl -fsSL https://api.github.com/repos/go-acme/lego/releases/latest \
  | sed -n 's/.*"tag_name": "\(v[^"]*\)".*/\1/p' | head -1)
curl -fL "https://github.com/go-acme/lego/releases/download/${version}/lego_${version}_linux_${arch}.tar.gz" \
  | sudo tar -xz -C /usr/local/bin lego
sudo apt-get install -y sshpass
sudo install -d -m 0700 /etc/ssl/fortigate

# 2. Skapa skriptet för deploy-hook (spara som /usr/local/bin/fortigate-deploy.sh)

#!/bin/bash
set -euo pipefail
FGT_IP="10.0.0.1"
FGT_USER="admin"
FGT_PASS="DITT_SSH_LOSENORD"
CERT_NAME="fairssl-vpn-cert"

CERT=$(cat "$LEGO_HOOK_CERT_PATH")
KEY=$(cat "$LEGO_HOOK_CERT_KEY_PATH")
SSH="sshpass -p $FGT_PASS ssh -T -o StrictHostKeyChecking=no $FGT_USER@$FGT_IP"

$SSH <<EOF
config vpn certificate local
edit "$CERT_NAME"
set private-key "$KEY"
set certificate "$CERT"
next
end
config vpn ssl settings
set servercert "$CERT_NAME"
end
EOF

# 3. Utfärda certifikatet (EAB-nycklarna behövs bara vid första körningen)

sudo /usr/local/bin/lego run \
  --domains "vpn.exempel.se" \
  --server https://fairssl.dk/acme \
  --eab --eab.kid DIN_EAB_KID --eab.hmac DIN_EAB_HMAC \
  --accept-tos --email acme-client@fairssl.dk \
  --http --http.webroot "/var/www/html" \
  --path "/etc/ssl/fortigate" \
  --deploy-hook "/usr/local/bin/fortigate-deploy.sh"

# 4. Daglig förnyelse via cron (välj en slumpmässig tidpunkt)

# /etc/cron.d/lego-fortigate (exempel)
17 04 * * * root /usr/local/bin/lego run \
  --domains "vpn.exempel.se" \
  --server https://fairssl.dk/acme \
  --accept-tos --email acme-client@fairssl.dk \
  --http --http.webroot "/var/www/html" \
  --path "/etc/ssl/fortigate" \
  --renew-days 7 \
  --deploy-hook "/usr/local/bin/fortigate-deploy.sh"

Cron kör lego run varje dag, och Lego v5+ använder ARI för att avgöra när det är dags att förnya. Svarar inte ACME-servern, eller anger ARI ingen förnyelse, förnyar Lego när 7 dagar återstår. Skriptet i --deploy-hook körs bara när certifikatet faktiskt har förnyats.

Windows-server med simple-acme

Har du ingen Linux-server fungerar samma lösning på Windows med simple-acme och Posh-SSH. Installera FairSSL-utgåvan av simple-acme, som redan har rätt inställningar och Deploy-FortiGate.ps1 i mappen Scripts.

# PowerShell, kör som administratör

Install-Module Posh-SSH, CredentialManager -Force -Scope CurrentUser

New-StoredCredential -Target "FortiGate-acme-user" `
  -UserName "admin" -Password "DITT_SSH_LOSENORD" -Persist LocalMachine

cd C:\simple-acme
wacs.exe --verbose --baseuri "https://fairssl.dk/acme" `
  --eab-key-identifier DIN_EAB_KID --eab-key DIN_EAB_HMAC --accepttos `
  --source manual --host "vpn.exempel.se" --validation none `
  --store pemfiles --pemfilespath "C:\simple-acme\Certificates" `
  --pemfilesname "vpn-exempel-se" --friendlyname "fairssl-vpn-cert" `
  --installation script --script ".\Scripts\Deploy-FortiGate.ps1" `
  --scriptparameters "-StorePath 'C:\simple-acme\Certificates' -FilePrefix 'vpn-exempel-se' -FirewallHost '10.0.0.1' -CertLabel 'fairssl-vpn-cert' -CredentialTarget 'FortiGate-acme-user'"

Lägg till -UpdateAdmin i --scriptparameters om admin HTTPS också ska använda certifikatet. simple-acme skapar automatiskt en schemalagd aktivitet som körs varje dag och förnyar när ARI anger att det är dags, eller när mindre än 7 dagar återstår.

FortiMail och FortiWeb

FortiMail och FortiWeb hanteras på samma sätt: en extern server utfärdar certifikatet, och en deploy-hook för över det via REST API. Under ACME Easy Guides i FairSSL-kontrollpanelen finns färdiga skript för FortiMail (Linux och Windows) och FortiWeb (Windows). Upplägget är detsamma som i FortiGate-exemplen ovan. Det som skiljer är API-anropen och den endpoint som installerar certifikatet.

Felsökning

Status står kvar på Pending

Kontrollera att _dnsauth.<domän> är en CNAME-post som pekar på FairSSL:s DNS-server. Du kan kontrollera det med dig _dnsauth.din-domän.se CNAME. Starta sedan utfärdandet igen med execute vpn certificate local renew <namn>.

Lego svarar account does not exist

Felet beror oftast på en äldre Lego-version. Uppgradera till v5.0.4 eller senare och kör kommandot i steg 3 igen med samma --path. Kvarstår felet, ta bort mappen /etc/ssl/fortigate/accounts och kör steg 3 igen med EAB-nycklarna.

Överföringen via SSH misslyckas med Host key verification failed

Första gången måste du godkänna FortiGates värdnyckel för SSH. Kör ssh admin@<fortigate-ip> manuellt från servern som kör skriptet och bekräfta fingeravtrycket, eller lägg in värdnyckeln i ~/.ssh/known_hosts i förväg.

SSL VPN visar fortfarande det gamla certifikatet efter bytet

SSL VPN-tjänsten håller certifikatet i minnet. FairSSL:s fullständiga skript i kontrollpanelen löser det genom att först sätta servercert till self-sign och sedan tillbaka till det nya certifikatet. Använder du ett eget eller förenklat skript måste det göra samma växling.

Certifikat på många servrar och appliances

Ett offentligt SSL-certifikat får vara giltigt i högst 199 dagar nu, 99 dagar senast 2027-03-15 och 46 dagar senast 2029-03-15. Varje certifikat måste då bytas minst två gånger om året nu och minst åtta gånger om året från 2029, på varje server, brandvägg och lastbalanserare där det används. sslbrain från FairSSL körs som en appliance i ert eget nätverk och förnyar och installerar certifikaten från ett ställe, även på utrustning utan agent.

Så förnyar och installerar sslbrain certifikat på FortiGate(öppnar sslbrain.com i en ny flik)

Vanliga frågor

Hitta svar på de vanligaste frågorna om SSL-certifikat och FairSSL.

Inbyggd ACME med External Account Binding kräver FortiOS 7.6.3 eller senare. Tidigare 7.6-versioner har ACME men saknar EAB och fungerar därför inte med en kommersiell ACME-tjänst som FairSSL:s. FortiGate med FortiOS äldre än 7.6.3 använder proxy-lösningen med en Linux- eller Windows-server.
Nej. FairSSL AutoDNS validerar domänen med DNS-01 hos FairSSL, så FortiGate behöver inte öppna port 80 mot internet. Fältet acme-auth-url måste ändå fyllas i eftersom FortiOS CLI kräver det, men HTTP-01 används aldrig så länge domänen är inställd på AutoDNS-validering i din FairSSL-kontrollpanel.
Kör get vpn certificate local i CLI. Där ska det stå Status: OK och ett giltigt utgångsdatum. Står det Pending, kontrollera att domänen är rätt konfigurerad under AutoDNS i din FairSSL-kontrollpanel och kör sedan execute vpn certificate local renew <namn>.
FortiOS 7.6.3 stöder vanlig ACME, men stödet för ARI är begränsat. Sätter du auto-regenerate-days till 30 förnyar FortiGate certifikatet 30 dagar före utgångsdatum. Det räcker både för dagens maximala livslängd på 199 dagar och för gränsen på 99 dagar som gäller från 15 mars 2027. Vill du ha fullt ARI-stöd är proxy-lösningen med Lego eller simple-acme mer flexibel.
FortiMail saknar inbyggt ACME-stöd och hanteras alltid med proxy-lösningen. FortiWeb 8.0.3 och senare har inbyggd ACME med EAB, så där behövs proxy-lösningen främst för äldre FortiWeb-versioner eller när du vill använda FairSSL:s färdiga skript. Båda har väldokumenterade REST API:er, så en extern server kan utfärda certifikatet med Lego eller simple-acme och föra över det via API:et. Färdiga exempelskript för båda plattformarna finns i FairSSL-kontrollpanelen under "ACME Easy Guides".
Du behöver dem bara vid den första registreringen. FortiGate sparar ACME-kontot internt och använder det vid kommande förnyelser. I proxy-lösningen sparar Lego kontot lokalt i katalogen som anges med --path, och simple-acme sparar det på motsvarande sätt. Spara ändå EAB-nycklarna på ett säkert ställe ifall du senare behöver bygga upp lösningen igen.
Ja. FortiGate kan koppla samma lokala certifikatobjekt till flera tjänster. För SSL VPN: config vpn ssl settings, set servercert "namn", end. För admin HTTPS: config system global, set admin-server-cert "namn", end. När certifikatet förnyas uppdateras båda bindningarna automatiskt.

Redo att automatisera FortiGate-certifikat?

Skapa ett gratis konto och beställ ditt första certifikat. Ett DV-certifikat utfärdas på under 2 minuter.