Kort svar
Almindelig (enkeltvejs) TLS autentificerer kun serveren: klienten bekræfter at den taler med den rigtige server, men forbliver selv anonym på transportlaget. mTLS er tovejs: både server og klient præsenterer et certifikat, og begge valideres. Krypteringen er den samme — forskellen er udelukkende klient-autentificeringen. Du vælger mTLS når du har brug for at bevise hvem klienten er, typisk i service-til-service- og maskine-til-maskine-scenarier.
Den centrale forskel: hvem beviser hvad
| Egenskab | Almindelig TLS | mTLS |
|---|---|---|
| Serveridentitet verificeret | Ja | Ja |
| Klientidentitet verificeret | Nej | Ja |
| Klienten skal have et certifikat | Nej | Ja |
| Ekstra handshake-beskeder | — | CertificateRequest, Certificate, CertificateVerify |
| Antal certifikater at drifte | Ét pr. server | Ét pr. server + ét pr. klient |
Handshaken side om side
I begge tilfælde starter klienten med ClientHello, og serveren svarer med sit certifikat. Forskellen kommer i serverens svar. Ved mTLS tilføjer serveren en CertificateRequest, og klienten må svare med sit certifikat og en signatur, der beviser, at den ejer den private nøgle:
Almindelig TLS mTLS
-------------- ----
ClientHello --> ClientHello -->
<-- ServerHello <-- ServerHello
<-- Certificate <-- Certificate
<-- CertificateRequest
<-- ServerHelloDone <-- ServerHelloDone
(klienten sender intet cert) Certificate -->
CertificateVerify -->
Finished --> Finished -->
Vil du forstå hele den underliggende handshake, så læs TLS-handshake forklaret.
Hvordan testen ser forskellig ud
Mod en almindelig TLS-server forbinder du uden videre:
openssl s_client -connect example.com:443 -servername example.com
Mod en mTLS-server får du en handshake-fejl medmindre du sender et klientcertifikat. Outputtet afslører kravet med linjen Acceptable client certificate CA names:
openssl s_client -connect api.example.com:443 -servername api.example.com \ -cert client.crt -key client.key
Hvad mTLS ikke løser
mTLS beviser identitet, ikke autorisation. At en klient har et gyldigt certifikat fortæller dig hvem den er — ikke hvad den må. Du skal stadig kortlægge certifikat-identiteten (typisk CN eller en SAN) til rettigheder i din applikation. mTLS erstatter heller ikke kryptering — den kommer oven på den samme kryptering som almindelig TLS.
Hvornår vælger du hvad?
- Almindelig TLS: offentlige websites og API'er hvor klienterne er ukendte (browsere, mobilapps, tredjeparter). Klient-identitet håndteres på applikationslaget med login, OAuth eller API-nøgler.
- mTLS: lukkede miljøer hvor du kontrollerer begge ender — service mesh, gateway-til-backend, interne maskine-til-maskine-API'er og Zero Trust.
Den driftsmæssige pris ved mTLS
Det skift fra "ét certifikat pr. server" til "ét pr. server og ét pr. klient" mangedobler hurtigt antallet af certifikater og udløbsdatoer. CertControl opdager og overvåger dem alle — server- såvel som klientcertifikater fra interne CA'er — og advarer før de udløber, så tovejs-tilliden ikke pludselig brydes af en glemt fornyelse. Læs mere i vores mTLS-guide.
Ofte stillede spørgsmål
Bruger mTLS en anden kryptering end almindelig TLS?
Nej. Krypteringen, cipher suites og protokolversioner er de samme. mTLS tilføjer kun klient-autentificering oven på den eksisterende TLS-handshake.
Er mTLS langsommere end almindelig TLS?
Marginalt. Der er lidt ekstra arbejde under handshaken (klientcertifikat-validering og en ekstra signatur), men det er en engangsomkostning pr. forbindelse. Med session-genoptagelse er forskellen i praksis ubetydelig.
Kan en browser bruge mTLS?
Ja, via klientcertifikater, men UX'en er klodset, og det skaleres dårligt til mange brugere. mTLS bruges derfor mest til maskine-til-maskine-trafik. Se artiklen om klientcertifikater i browsere.
Erstatter mTLS et login?
Ikke nødvendigvis. mTLS beviser identiteten af klient-maskinen eller -servicen, ikke nødvendigvis af en menneskelig bruger. Til brugerlogin er token- eller session-baseret autentificering normalt mere praktisk.
Skal både server- og klientcertifikat komme fra samme CA?
Nej. Serveren kan have et offentligt certifikat, mens klienterne har certifikater fra en intern CA. Hver part konfigurerer blot hvilken CA den stoler på til den modsatte rolle.