SSL-certifikater kan højst være gyldige i 199 dage. Senest 15-03-2027 bliver grænsen 99 dage, for DigiCert-certifikater allerede fra 24-02-2027. Læs mere →

Fortinet ACME-certifikater: FortiGate, FortiMail og FortiWeb

FortiOS 7.6.3 og nyere har en indbygget ACME-klient med External Account Binding (EAB), hvilket gør det muligt for FortiGate selv at hente og forny certifikater fra FairSSL. Ældre FortiGate-versioner kræver en ekstern proxy-server med Lego eller simple-acme, der overfører certifikatet via SSH. Begge metoder gennemgås her.

Understøttede versioner

FortiGateVersionerFortiOS 7.6.3 og nyereKører påEnheden selvACME-klientEnhedens indbyggede ACME-klient med EAB
FortiGateVersionerFortiOS før 7.6.3Kører påWindows Server 2016 eller nyere, eller 2012/2012 R2 med WMF 5.1 (PowerShell 5.1)ACME-klientsimple-acme 2.4.0+ (FairSSL-udgaven, .NET 10 medfølger) + Posh-SSH, CredentialManager
FortiGateVersionerFortiOS før 7.6.3Kører påEn Linux-server, som sender certifikatet til enhedenACME-klientlego 5.0.4+
FortiMailVersionerGuiden sætter ingen versionsgrænseKører påWindows Server 2016 eller nyere, eller 2012/2012 R2 med WMF 5.1 (PowerShell 5.1)ACME-klientsimple-acme 2.4.0+ (FairSSL-udgaven, .NET 10 medfølger) + Posh-SSH, CredentialManager
FortiMailVersionerGuiden sætter ingen versionsgrænseKører påEn Linux-server, som sender certifikatet til enhedenACME-klientlego 5.0.4+
FortiWebVersionerGuiden sætter ingen versionsgrænseKører påWindows Server 2016 eller nyere, eller 2012/2012 R2 med WMF 5.1 (PowerShell 5.1)ACME-klientsimple-acme 2.4.0+ (FairSSL-udgaven, .NET 10 medfølger) + FortiWeb REST API, CredentialManager

Hvilken tilgang skal du bruge?

Anbefalet FortiOS 7.6.3+

Indbygget ACME på FortiGate

FortiGate kører selv ACME-klienten. Du registrerer et lokalt certifikatobjekt med EAB-nøgler, og FortiOS håndterer udstedelse og automatisk fornyelse. Ingen ekstra host nødvendig.

Gå til indbygget opsætning →
Fallback Alt før 7.6.3

Proxy via Lego eller simple-acme

En lille Linux- eller Windows-host udsteder certifikatet og overfører det til FortiGate via SSH eller REST API. Samme tilgang virker også til FortiMail og FortiWeb, der ikke har indbygget ACME.

Gå til proxy-opsætning →

Indbygget ACME (FortiOS 7.6.3+)

FortiGates indbyggede ACME-klient understøtter External Account Binding, hvilket er kravet for at hente certifikater fra en kommerciel CA som FairSSL. Hele opsætningen sker via CLI.

Trin 1:Verificér firmware

Log ind på FortiGate via SSH eller GUI-konsollen og tjek versionen. EAB-understøttelse kræver 7.6.3 eller nyere.

get system status

Trin 2:Konfigurér FairSSL AutoDNS

Log ind på dit FairSSL-kontrolpanel, gå til AutoDNS, og opret en CNAME-viderestilling for _dnsauth.<dit-domæne> til FairSSLs DNS-server. AutoDNS svarer på selve ACME-challengen, så FortiGate behøver ikke åbne port 80 mod internettet. Se den fulde AutoDNS-vejledning.

Trin 3:Opret det lokale ACME-certifikatobjekt

Hent EAB KID og HMAC-nøglen fra ACME-fanen i dit FairSSL-kontrolpanel. Erstat værdierne nedenfor og kør 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.eksempel.dk
        set acme-auth-url "http://vpn.eksempel.dk/.well-known/acme-challenge"
        set auto-regenerate-days 30
        set auto-regenerate enable
    next
end

auto-regenerate-days 30 betyder, at FortiGate forsøger at forny 30 dage før udløb. Det er sikkert for både 90-dages og 47-dages certifikater. Sæt acme-domain til præcis det FQDN, certifikatet skal udstedes til. FortiGates indbyggede ACME-flow er tiltænkt et enkelt FQDN. Brug proxy-løsningen til wildcard eller flere SAN.

Trin 4:Udsted certifikatet

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

FortiGate kontakter FairSSLs ACME-server, validerer ejerskab via AutoDNS og henter certifikatet. Hele flowet tager normalt under 30 sekunder.

Trin 5:Verificér status

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

Forvent Status: OK og en gyldighedsperiode der matcher certifikatets levetid (typisk 47-90 dage).

Trin 6:Bind certifikatet til services

Brug det lokale certifikatobjekt til SSL VPN, admin HTTPS, eller andre services. Du kan binde det samme objekt til flere services - alle bindinger får automatisk det fornyede certifikat.

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

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

Tjek bagefter med FairSSLs SSL-scanner at det rigtige certifikat serveres på det offentlige FQDN.

Proxy-opsætning (FortiGate < 7.6.3, FortiMail, FortiWeb)

Når enheden ikke selv kan køre ACME, udsteder vi certifikatet på en separat Linux- eller Windows-host og overfører det via SSH eller REST API. Linux-varianten med Lego er den mest fleksible og bruges også til FortiMail og FortiWeb.

Linux-host med Lego og SSH

En lille Linux-server (Debian, Ubuntu eller RHEL) udsteder certifikatet via Lego v5.0.4 eller nyere og overfører PEM-filerne til FortiGate via SSH med sshpass. Ældre Lego-versioner er ikke ARI-bevidste og fungerer ikke pålideligt med EAB-konti, så hold dig til v5.0.4+.

# 1. Installer Lego og sshpass

arch=$(dpkg --print-architecture)
case "$arch" in amd64|arm64) ;; *) echo "Skift 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. Opret deploy-script (gem som /usr/local/bin/fortigate-deploy.sh)

#!/bin/bash
set -euo pipefail
FGT_IP="10.0.0.1"
FGT_USER="admin"
FGT_PASS="DIN_SSH_KODE"
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. Udsted certifikatet (EAB-nøgler kun ved første kørsel)

sudo /usr/local/bin/lego run \
  --domains "vpn.eksempel.dk" \
  --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. Cron-fornyelse, kør dagligt på et tilfældigt tidspunkt

# /etc/cron.d/lego-fortigate (eksempel)
17 04 * * * root /usr/local/bin/lego run \
  --domains "vpn.eksempel.dk" \
  --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"

Lego v5+ kører run dagligt og bruger ARI til at afgøre, hvornår der skal fornys. Hvis ACME-serveren ikke svarer, eller ARI ikke peger på fornyelse, falder den tilbage til at forny ved 7 dage tilbage af certifikatet. Deploy-hooket aktiveres kun, når der faktisk fornys.

Windows-host med simple-acme

Hvis du ikke har en Linux-server, kan opsætningen laves på Windows med simple-acme og Posh-SSH. Installer FairSSL-udgaven af simple-acme (forudkonfigureret med korrekte indstillinger og Deploy-FortiGate.ps1 i Scripts-mappen).

# PowerShell, Run as Administrator

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

New-StoredCredential -Target "FortiGate-acme-user" `
  -UserName "admin" -Password "DIN_SSH_KODE" -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.eksempel.dk" --validation none `
  --store pemfiles --pemfilespath "C:\simple-acme\Certificates" `
  --pemfilesname "vpn-eksempel-dk" --friendlyname "fairssl-vpn-cert" `
  --installation script --script ".\Scripts\Deploy-FortiGate.ps1" `
  --scriptparameters "-StorePath 'C:\simple-acme\Certificates' -FilePrefix 'vpn-eksempel-dk' -FirewallHost '10.0.0.1' -CertLabel 'fairssl-vpn-cert' -CredentialTarget 'FortiGate-acme-user'"

Tilføj -UpdateAdmin inde i --scriptparameters, hvis admin HTTPS også skal bruge certifikatet. simple-acme opretter automatisk et planlagt opgave der kører dagligt og fornyer når ARI eller 7-dages-fallback siger til.

FortiMail og FortiWeb

Begge enheder bruger samme grundlæggende mønster: ekstern host udsteder certifikat, deploy-hook overfører ind via REST API. FairSSL-kontrolpanelet under ACME Easy Guides har færdige scripts til både FortiMail (Linux + Windows) og FortiWeb (Windows). Logik og struktur er identisk med FortiGate-eksemplerne ovenfor; det er kun de konkrete API-kald og endpointet for selve installationen, der er forskellige.

Fejlfinding

Status forbliver Pending

Tjek at _dnsauth.<domæne> er konfigureret som CNAME til FairSSLs DNS-server. Kør dig _dnsauth.dit-domæne.dk CNAME for at verificere. Genstart udstedelsen med execute vpn certificate local renew <navn>.

Lego svarer account does not exist

Dette skyldes sandsynligvis en ældre Lego-version. Opgrader til v5.0.4+ og kør udstedelseskommandoen igen med samme --path. Hvis fejlen fortsætter, slet mappen /etc/ssl/fortigate/accounts og kør trin 3 forfra med EAB-nøglerne.

SSH-deploy fejler med Host key verification failed

Første gang skal du acceptere FortiGates SSH host key. Kør ssh admin@<fortigate-ip> manuelt fra deploy-serveren og bekræft fingerprintet. Alternativt kan du tilføje host key til ~/.ssh/known_hosts på forhånd.

SSL VPN viser stadig det gamle certifikat efter deploy

SSL VPN-tjenesten cacher certifikatet i hukommelsen. Deploy-scriptet håndterer dette ved først at sætte servercert til self-sign (eller et andet midlertidigt certifikat) og dernæst tilbage til det nye. Hvis du har skiftet certifikatet manuelt, så gentag de to config vpn ssl settings-blokke i deploy-scriptet.

Certifikater på mange servere og appliances

Et offentligt SSL-certifikat kan højst være gyldigt i 199 dage nu, 99 dage senest 15-03-2027 og 46 dage senest 15-03-2029. Hvert certifikat skal dermed skiftes mindst to gange om året nu og mindst otte gange om året fra 2029, på hver server, firewall og load balancer, det bruges på. sslbrain fra FairSSL kører som en appliance i jeres eget netværk og fornyer og installerer certifikaterne fra ét sted, også på udstyr uden agent.

Sådan fornyer og installerer sslbrain certifikater på FortiGate(åbner sslbrain.com i en ny fane)

Ofte stillede spørgsmål

Find svar på de mest almindelige spørgsmål om SSL certifikater og FairSSL.

Indbygget ACME med External Account Binding kræver FortiOS 7.6.3 eller nyere. Tidligere 7.6-versioner understøttede ACME, men uden EAB, hvilket gør dem ubrugelige i forbindelse med kommercielle CA'er som FairSSL. Ældre FortiGate-enheder (alt før 7.6.3) skal bruge proxy-løsningen med en Linux- eller Windows-server.
Nej. FairSSL AutoDNS validerer domænet via DNS-01-challenges på vores side, så FortiGate ikke behøver at eksponere port 80 mod internettet. acme-auth-url-feltet skal dog stadig konfigureres, da FortiOS-CLI'en kræver det, men HTTP-01-valideringen aktiveres aldrig, så længe domænet er konfigureret til AutoDNS-validering i dit FairSSL-kontrolpanel.
Kør get vpn certificate local i CLI. Status skal fremgå som Status: OK med en gyldig udløbsdato. Hvis status er Pending, skal du kontrollere, at domænet er konfigureret korrekt under AutoDNS i dit FairSSL-kontrolpanel, og derefter køre execute vpn certificate local renew <navn>.
FortiOS 7.6.3 understøtter standard ACME, men ARI-understøttelsen er fortsat begrænset. Hvis du sætter auto-regenerate-days til 30, fornyer FortiGate certifikatet 30 dage før udløb, hvilket er tilstrækkeligt for både 90-dages og 47-dages certifikater. For fuld ARI-understøttelse er proxy-løsningen via Lego eller simple-acme stadig mere fleksibel.
FortiMail har ingen indbygget ACME-klient og håndteres altid via proxy-løsningen. FortiWeb 8.0.3 og nyere har indbygget ACME med EAB, så her er proxy-løsningen primært relevant for ældre FortiWeb-versioner, eller når man vil bruge FairSSLs færdige deploy-script. Begge har veldokumenterede REST API'er, så en ekstern server kan udstede certifikatet via Lego eller simple-acme og overføre det via API'et. Vi har færdige eksempelskripter til begge platforme i FairSSL-kontrolpanelet under "ACME Easy Guides".
Du skal kun bruge dem ved den første registrering. FortiGate gemmer ACME-kontoen internt, og fremtidige fornyelser anvender denne eksisterende konto. Ved proxy-løsningen gemmer Lego eller simple-acme tilsvarende kontoen lokalt i den mappe, der er angivet med --path. Gem alligevel EAB-nøglerne et sikkert sted som backup, hvis du senere får brug for at genskabe opsætningen.
Ja. FortiGate kan binde det samme lokale certifikatobjekt til flere tjenester. For SSL VPN: config vpn ssl settings, set servercert "navn", end. For admin HTTPS: config system global, set admin-server-cert "navn", end. Når certifikatet fornyes, opdateres begge bindinger automatisk.

Klar til at automatisere FortiGate-certifikater?

Opret en gratis konto og bestil dit første certifikat. Et DV-certifikat udstedes på under 2 minutter.