SSL-certifikater kan højst være gyldige i 199 dage. Fra 15. marts 2027 bliver grænsen 99 dage. Læs mere →

Cross-signed intermediate på Windows Server

Når en CA migrerer sit rodcertifikat, sendes nye certifikater fra et nyt intermediate, der peger på en ny rod. Ældre klienter, der ikke kender den nye rod, bryder TLS-handshake. Et cross-signed intermediate bygger bro mellem den nye udstedende CA og den gamle rod, så både moderne og ældre klienter kan validere kæden.

Denne guide viser, hvordan du på Windows Server tilføjer, fremtvinger, fjerner og distribuerer cross-signed intermediates. Eksemplerne er baseret på de tre CA'er FairSSL aktivt sælger: GlobalSign og AlphaSSL, Sectigo med PositiveSSL, og DigiCert med RapidSSL.

Status: GlobalSign skiftede 27. juli 2026, DigiCert skifter standardvalget 15. oktober 2026

GlobalSign har to parallelle rod-hierarkier, et RSA-baseret og et ECC-baseret, fordi RSA- og ECC-certifikater kræver hver sin algoritme hele vejen op gennem kæden. Den 27. juli 2026 blev alle kunde- og partnerprodukter flyttet til de TLS-dedikerede rødder R46 (RSA) og E46 (ECC), og de resterende konti fulgte 13. september 2026. Cross-signede intermediates fra de gamle rødder R3 (RSA) og R5 (ECC) leveres ved siden af, så ældre klienter stadig kan validere. Tillid til R3 fjernes i browsere 15. april 2027, og tillid til R5 fjernes 15. april 2029. Kilde: GlobalSign Support: Upcoming Changes to TLS Roots.

Sectigo flyttede tidligere: EV 15. april 2025, OV 15. maj 2025 og DV 2. juni 2025, alle til Sectigo Public Server Authentication Root R46 og E46 med cross-cert mod USERTrust RSA og USERTrust ECC.

DigiCert udsteder fra 15. oktober 2026 som standard fra DigiCert TLS RSA4096 Root G5 og TLS ECC P384 Root G5. FairSSLs CertCentral-konto er sat til G2-hierarkiet, og vi bliver der så længe DigiCert tillader det, så DigiCert-, Thawte-, RapidSSL- og GeoTrust-certifikater bestilt hos os kæder fortsat op til DigiCert Global Root G2 fra 2013. Chrome Root Store understøtter kun de to G5-rødder fra 15. september 2027.

Vejledning pr. CA

Fremgangsmåden er den samme for alle tre CA'er, men filnavne, rodnavne og intermediates er forskellige. Vælg din CA for de konkrete filer og kommandoer. Denne side dækker baggrunden, GPO-udrulning og fejlfinding på tværs.

Hvilken kæde har du?

Tjek hvilket produkt du har bestilt fra FairSSL, og hvilken cross-cert-kæde der hører til. Tabellen viser den situation, der gælder pr. 2026 efter de igangværende rod-migreringer.

Produkt fra FairSSL Ny udstedende CA Cross-signed via Officiel kilde
AlphaSSL DV (RSA) GlobalSign GCC R6 AlphaSSL CA 2025 (under R6) → GlobalSign GCC R46 AlphaSSL CA 2025 (under R46) efter 27. jul 2026 R6 → R46 cross-cert (R46 signeret af R6) AlphaSSL KB
DomainSSL DV (RSA og ECC) Begge nøgletyper ligger i øjeblikket under R3 (SHA-256). Migrerer til R46-baseret intermediate inden 27. jul 2026. R46 cross-signed by R3 under overgangsperioden Migration KB
OrganizationSSL OV / ExtendedSSL EV (RSA) RSA-intermediate under R3 → R46-baseret intermediate efter 27. jul 2026 R46 (RSA) cross-signed by R3 (RSA) Migration KB
OrganizationSSL OV / ExtendedSSL EV (ECC) ECC-intermediate under R5 → E46-baseret intermediate efter 27. jul 2026 E46 (ECC) cross-signed by R5 (ECC) Migration KB
Sectigo PositiveSSL DV (RSA) Sectigo Public Server Authentication CA DV R36 R46 cross-signed by USERTrust RSA CA, AAA Certificate Services Sectigo KB
Sectigo OV/EV (RSA) Sectigo Public Server Authentication CA OV/EV R36 R46 cross-signed by USERTrust RSA CA, AAA Certificate Services Sectigo KB
DigiCert Basic OV (RSA) DigiCert Global G2 TLS RSA SHA256 2020 CA1 G2 betroet direkte. G5 fra 15. okt 2026 som DigiCerts standard, med cross-cert G5-by-G2 DigiCert KB
RapidSSL DV (RSA) RapidSSL Global TLS RSA4096 SHA256 2022 CA1 (under DigiCert Global Root G2) G2 er betroet direkte. Chrome Root Store understøtter kun de to G5-rødder fra 15. sep 2027 DigiCert root liste

Sectigos officielle distributionsside lister ni varianter (rod, DV/OV/EV i RSA og ECC, plus cross-sign-bundles). Filerne blev senest opdateret juni-juli 2025 og kan downloades direkte fra crt.sh eller via Sectigos KB-side ovenfor.

Cross-cert filer du skal bruge

De konkrete filer der skal downloades og importeres på serveren. Find din CA, hent filen, og følg den procedure nedenfor der passer til dit scenarie.

GlobalSign og AlphaSSL

Officiel oversigt: GlobalSign Cross Certificates KB

  • R46 signeret af R6 (RSA 4096, til 10. dec 2034) - bruges til AlphaSSL og GlobalSign RSA-certifikater under det nye R46-hierarki
    r6r46cross2019.crt
  • R46 signeret af R3 (RSA 4096, til 18. mar 2029) - alternativ kæde mod R3-rod
    r3r46cross2019.crt
  • E46 signeret af R5 (ECC, gyldig til 19. jan 2038) - til ECC-certifikater under det nye E46-hierarki
    r5e46cross2019.crt
  • R6 signeret af R3 (RSA 4096, til 18. mar 2029) - til legacy-stier mod ældre R3-rod
    r3r6cross2019.crt

Sectigo (PositiveSSL m.fl.)

Officiel oversigt: Sectigo Public Roots and Hierarchy KB

DigiCert og RapidSSL

Officiel oversigt: DigiCert Trusted Root Authority Certificates

  • DigiCert Global Root G2 er betroet direkte i alle moderne klienter indtil 15. apr 2029. Cross-cert er normalt ikke nødvendig.
  • G5 cross-signed roots: brug versionen fra 31. marts 2026, DigiCertTLSRSA4096RootG5_under_DigiCertGlobalRootG2_2026.crt, gyldig til 30. marts 2036. Den ældre cross-sign under DigiCert Global Root CA (G1) fra 2022 skal ikke bruges, da G1-rødderne blev fjernet fra Mozilla og Chrome 15. april 2026.
  • Migration plan: Multipurpose → dedicated TLS root hierarchies

Tip: tjek altid filens udstedelsesdato og udløbsdato før du importerer den. CA'erne ruller løbende nye versioner ud, og en cross-cert der står her kan være erstattet med en nyere variant. Hvis du er i tvivl, gå til CA'ens officielle KB-side (linket øverst i hver kolonne) og se hvilken fil de i øjeblikket anbefaler.

Server- og klient-rolle i kædevalg

Hvad serveren gør

Serveren udleverer i TLS-handshake ÉN kæde, ikke flere. Schannel/IIS bygger kæden via CertGetCertificateChain ud fra det, der ligger i Windows-certifikatlageret, og vælger den korteste gyldige sti til en betroet rod.

For et AlphaSSL-certifikat efter 27. juli 2026 ser de to muligheder sådan ud:

  • Den korte sti: server-cert → GlobalSign GCC R46 AlphaSSL CA 2025 → GlobalSign Root R46 (den nye CA-rod).
  • Den lange sti via cross-cert: server-cert → GlobalSign GCC R46 AlphaSSL CA 2025 → "GlobalSign Cross Certificate R6-R46" → GlobalSign Root CA - R6.

Er begge stier mulige i serverens certifikat-store, vælger Windows Server kun at aflevere den korte udgave til klienten, selv om klienten måske har brug for den lange. Klienten får aldrig cross-cert-kæden at se.

Skal serveren tvinges til at sende cross-cert-kæden, skal den korte sti gøres ugyldig lokalt på serveren. Standardmetoden er at deaktivere den nye CA-rod (R46) i Trusted Root via MMC, mens cross-cert-versionen forbliver i Intermediate-lageret. Schannel kan så ikke længere bygge den korte kæde og falder tilbage på cross-cert-stien. Hele installationsprocessen er beskrevet i Installer cross-sign på Windows Server nedenfor.

Kæden bliver længere for hver migration

AlphaSSL peger i dag op til R6. Klienter der kun har R3 (ikke R6) som betroet rod skal bruge cross-cert R6 signeret af R3 (r3r6cross2019.crt) for at validere.

Efter 27. juli 2026 peger AlphaSSL op til R46. Klienter med kun R6 betroet skal bruge R46 signeret af R6 (r6r46cross2019.crt). Klienter med kun R3 betroet skal bruge R46 signeret af R3 (r3r46cross2019.crt) eller stable begge cross-certs for at nå hele vejen ned: r6r46cross2019.crt + r3r6cross2019.crt.

Hvad klienten gør med det

Klienten modtager den ene kæde, serveren sendte, og bygger sin egen lokale validering oven på den. Hver klient kigger efter den første rod i kæden, den selv stoler på, og stopper der.

Hvilken kæde serveren sender afhænger af, hvilke rødder serveren selv har aktiveret i sit Trusted Root. For AlphaSSL R46-eksemplet:

  • Server med R46 aktiv (standard): bygger og sender kort kæde til R46. Kun klienter med R46 som betroet rod validerer.
  • Server med R46 deaktiveret, R6 aktiv: bygger og sender mellemlang kæde via cross-cert R46 signeret af R6 op til R6. Klienter med R46 ELLER R6 som betroet rod validerer (R46-klienten matcher Subject = R46 i cross-cert mod sin egen R46-rod; R6-klienten matcher Issuer = R6 mod sin egen R6-rod).
  • Server med R46 og R6 deaktiveret, R3 aktiv: bygger og sender lang kæde via to cross-cert-led op til R3. Klienter med R46, R6 eller R3 som betroet rod validerer alle.

Vælg den server-opsætning, der dækker den ældste klient-population du skal supportere. Lange kæder koster handshake-bytes for alle klienter, så hvis ingen af jeres klienter behøver R3-stien, lad R6 være aktiv.

Den eneste måde at få serveren til at sende cross-cert-kæden er at deaktivere den nye CA-rod (og evt. den mellemste rod) lokalt, så Schannel ikke kan bygge den korte sti. Den certifikatpakke CA'en udsteder gør det ikke for dig: Microsofts Root Cert Program installerer alligevel den nye rod i Trusted Root, og Schannel vælger så den kortere sti uanset hvad pakken indeholder.

Installer cross-sign på Windows Server

AlphaSSL-eksempel: importér cross-cert r3r6cross2019.crt i Intermediate Certification Authorities og deaktiver GlobalSign Root R6 i Trusted Root. Udskift Cross-Sign certifikatet så det passer med det certifikat du har.

1. Hent filerne

Hent den relevante cross-cert-fil fra Cross-cert filer du skal bruge ovenfor.

2. Åbn MMC for Computer Account

  1. Tryk Win+R, skriv mmc, klik OK. Bekræft UAC-prompt.
  2. I MMC: menu File → Add/Remove Snap-in... (eller Ctrl+M).
  3. I venstre liste, vælg Certificates → klik Add >.
  4. Vælg Computer accountNext. Dette er det vigtige valg, ikke "My user account".
  5. Vælg Local computerFinishOK.

3. Importér cross-cert til Intermediate Certification Authorities

  1. I venstre rude, udvid Certificates (Local Computer)Intermediate Certification Authorities → klik på undermappen Certificates.
  2. Højreklik på Certificates-mappen → All Tasks → Import...
  3. Certificate Import Wizard starter. Klik Next.
  4. Klik Browse..., vælg cross-cert-filen. Skift filtype-dropdown til All Files (*.*) hvis filen ikke vises. Vælg → OpenNext.
  5. Bekræft at lageret er Intermediate Certification AuthoritiesNextFinishOK.
  6. Tryk F5. Cross-cert-filen er nu i listen. Dobbeltklik for at bekræfte Subject (hvad certifikatet siger om sig selv) og Issuer (hvem signerede det).
  7. Skal du dække flere lag (fx også r6r46cross2019.crt), gentag trin 2-6 for hver fil.

4. Deaktiver den nye CA-rod i Trusted Root

Schannel finder ellers den nye rod i Trusted Root og bygger den korte kæde, og dit cross-cert ligger ubrugt i Intermediate-lageret.

  1. I venstre rude, naviger til Trusted Root Certification Authorities → Certificates.
  2. Find den nye CA-rod, der svarer til den nye kæde. For AlphaSSL R6-hierarkiet: GlobalSign Root R6. For R46-eraen efter 27. juli 2026: GlobalSign Root R46.
  3. Verificér først via dobbeltklik på Details-fanen at Subject = Issuer (det er en rod, ikke en cross-cert).
  4. Højreklik certifikatet → Properties → fanen General.
  5. Vælg Disable all purposes for this certificateOK. Eller mere præcist: vælg Enable only the following purposes og fjern fluebenet ved Server Authentication alene.
  6. Skal serveren også sende kæden helt ned til R3 (for klienter der kun har R3 som betroet rod), gentag samme procedure for GlobalSign Root R6. Schannel falder så tilbage på den lange kæde via begge cross-certs.

Hver deaktiveret rod gør hver TLS-handshake ~1 KB større. Deaktivér kun de rødder du faktisk har brug for.

4b. Disallowed-lageret er den robuste metode

Deaktivering via Disable all purposes virker, men Microsoft advarer selv om, at indstillingen kan blive rullet tilbage. I KB 2831004 står der: "if the Turn off Automatic Root Certificates Update Group Policy setting is disabled or not configured on the server, the certificate ... you don't want to use may be enabled or installed when the next chain building occurs."

Windows henter rodcertifikater fra Windows Update under kædeopbygning. Sletter du roden, kommer den tilbage. Slår du den automatiske rodopdatering fra på hele serveren, mister serveren også de rødder, den har brug for som TLS-klient. Den robuste metode er derfor at flytte roden til Disallowed-lageret:

  1. Højreklik Untrusted Certificates i venstre rude → Certificates.
  2. All Tasks → Import og vælg rodfilen for den nye rod.
  3. Roden ligger nu i Disallowed-lageret, hvor den automatiske rodopdatering ikke kan sætte den tilbage.

Sectigo udgiver færdige reg-filer til deres egne rødder, IISFix-MoveSectigoSelfSignedRoots-Disallowed.reg og IISFix-MoveSectigoSelfSignedRoots-Restore.reg. For GlobalSign og DigiCert gøres det manuelt som ovenfor.

5. Genstart Windows Server

Efter ændringer i Trusted Root og Intermediate-lagrene er en fuld Windows-genstart den eneste pålidelige måde at tømme Schannel- og HTTP.SYS-cache for cert-kæder. iisreset alene rammer ikke chain-cache i lsass, og net stop http rammer heller ikke Schannel-cache. Planlæg derfor altid et reboot-vindue når I deaktiverer eller skifter rødder.

6. Verificér udadtil

Efter reboot, test live fra internettet med FairSSL SSL Scanner eller SSL Labs. Den øverste rod i den udleverede kæde skal nu være den gamle (R3 eller R6 alt efter dit valg), ikke den nye R46. Hvis kæden stadig ender på R46, er deaktiveringen ikke trådt i kraft, eller en anden R46-rodkopi ligger stadig som aktiv i Trusted Root.

Skal det udrulles til mange servere? Lav en GPO der udruller cross-cert-filerne til Public Key Policies → Intermediate Certification Authorities, og udruller de rødder I vil deaktivere til Public Key Policies → Untrusted Certificates. Reboot kræves stadig på hver server, så planlæg det i forbindelse med jeres næste vedligeholdelsesvindue.

Vil I tilbage til standard? Genaktivér roden i Trusted Root (Properties → Enable all purposes eller Enable only the following purposes → Server Authentication tjekket) og genstart Windows Server. Cross-cert-filen kan blive liggende i Intermediate-lageret; Schannel vælger igen den korte sti, så længe den nye rod er aktiveret.

Verifikation

Den eneste pålidelige verifikation er at scanne serveren udefra og se den kæde, klienten faktisk modtager. Lokalt MMC viser kun hvad Windows mener kæden burde være, ikke hvad HTTP.SYS sender efter cache-flush.

  • Internet-vendt server: brug FairSSL SSL Scanner. Den viser den fulde kæde serveren udleverer og simulerer flere klient-populationer.
  • Intern server (uden adgang fra internettet): brug testssl.sh fra en anden maskine på netværket. Kommando: testssl.sh --chain server.intern.dk:443 viser hele kæden serveren sender.

Fejlfinding

"Chain issues: Incomplete" på SSL Labs eller FairSSL Scanner

Serveren sender ikke intermediate med i handshake. Tjek at intermediate (det udstedende eller cross-signede) ligger i Cert:\LocalMachine\CA, ikke i Cert:\CurrentUser\CA. Genstart HTTP-stakken efter import. Visse klienter (Windows, browsere) henter selv det manglende intermediate via AIA-opslag og kommer igennem alligevel, men de fleste open source-klienter venter ikke på AIA-opslag og melder fejl med det samme.

Klient melder "untrusted issuer" selvom certifikatet er gyldigt

Klientens betroede rødder indeholder ikke den øverste rod, kæden peger på. Hvis klienten kun har den gamle rod (R3) og du sender en kort kæde mod den nye (R46), så fejler valideringen. Tilføj cross-cert-versionen til serverens certifikatpakke, så klienten kan følge stien helt op til R3.

Windows ignorerer mit nyimporterede cross-cert

HTTP.SYS holder en kæde-cache pr. binding, og Schannel holder sin egen i lsass. Genstart Windows. At genstarte HTTP-stakken eller den enkelte rolle rammer ikke begge, så tjenesten kan svare med den gamle kæde bagefter.

AIA-fetch fejler bag firewall eller proxy

Windows forsøger at hente det manglende issuer-cert via HTTP fra URL'en i AIA-udvidelsen. Hvis udgående 80/tcp er blokeret, sker det uden fejlmelding. Symptomet er en server, der bygger kæder fint i lab, men ikke i produktion. Importér intermediate til CA-lageret eksplicit, så Windows ikke behøver opslaget.

Slettet rodcertifikat dukker op igen efter genstart

Det er Microsoft Root Certificate Program. Brug GPO til at deaktivere roden, eller importér den til Untrusted-lageret. Sletning alene rulles tilbage automatisk via Windows Update. Læs Microsofts dokumentation under Microsoft Trusted Root Program requirements.

Hvorfor virker det for nogle klienter og ikke andre?

En brudt eller mangelfuld certifikatpakke giver tilfældige resultater på tværs af klienter. Nogle klienter henter selv det manglende intermediate via AIA-udvidelsen i serverens cert. Andre gemmer batches af kendte intermediates i baggrunden og kommer igennem alligevel. Det ser ud som om "det virker for mig", men den næste bruger med samme browser-version og en kold cache rammer fejlen.

I praksis er det ofte mobiltelefoner, Safari og Firefox, der fejler først, når serveren glemmer intermediate. Windows og Chrome kan ofte lave et AIA-opslag og redde situationen, hvilket skjuler fejlen. Fungerer siden i Edge på en Windows-maskine, antager man at den fungerer for alle, og opdager først problemet, når en kunde ringer fra en iPhone.

Scott Helmes eksperiment viser præcis denne uforudsigelighed. Han konfigurerede en server til kun at sende leaf-certifikatet, uden intermediate, med den gamle rod utroet i klienten. Første forsøg: både Chrome og Firefox fejlede som forventet. Han lod derefter serveren sende det ISRG-signerede intermediate én gang, hvorefter begge kom igennem. Da han satte serveren tilbage til kun at sende leaf, virkede Firefox stadig, mens Windows fejlede: Firefox havde beholdt det intermediate den lige havde set, og Windows havde kun den gamle DST-signerede udgave gemt fra tidligere. Firefox henter også intermediates i baggrunden, men kun 100 om dagen, så det var ikke dét der reddede forbindelsen. Klienten svarer ud fra hvad den tilfældigvis har liggende fra tidligere forbindelser. Læs hans gennemgang her: Cross-signing & alternate trust paths: how they work.

Stol aldrig på, at klienten redder en mangelfuld kæde. Serveren skal sende den komplette certifikatpakke med alle intermediates, og hvis du har brug for at dække ældre klienter via en cross-cert-kæde, skal serveren aktivt sende den kæde, ikke regne med at klienterne selv finder den.

Ofte stillede spørgsmål om cross-signed intermediates

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

Kun på de servere, der præsenterer certifikater i TLS-handshake. Det vil typisk sige IIS, Exchange, RD Gateway, ADFS, en intern reverse proxy eller en applikation der lytter på 443. Windows-klienter har normalt ikke brug for det, fordi de kun validerer kæden de modtager fra serveren.
Microsoft Root Certificate Program geninstallerer manglende rodcertifikater automatisk via Windows Update, normalt inden for døgnet. Hvis du vil have et rodcertifikat blokeret, skal du bruge GPO til at deaktivere det (Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies > Trusted Root Certification Authorities) eller importere det til Untrusted-lageret. Sletning alene rulles tilbage automatisk.
Kør certutil -verify -urlfetch sti\til\server.crt og kig efter linjen "Application[0] = ... Server Authentication". Den udskriver den valgte kæde med tommelfingeraftryk på hvert led. Alternativt: åbn certifikatet i MMC, klik fanen "Certification Path". Det første led der peger op er det Windows har valgt.
Begge dele. Windows-certifikatlageret bestemmer hvilken kæde serveren bygger lokalt, men et stort antal ældre klienter (Java 7, gamle Android, embedded enheder) bygger ikke kæden selv og forventer at modtage hele kæden i handshake. Læg derfor det cross-signede intermediate i serverens CA-store (i IIS bliver det automatisk del af den certifikatpakke, der sendes med, når intermediate ligger i LocalMachine\CA), og lad Windows sende det med.
Delvist. Når en CA migrerer rod og udsteder fra et nyt intermediate, sender ACME-serveren automatisk en ny fuld kæde ved næste fornyelse. Klienter som simple-acme importerer hele kæden i Windows-certifikatlageret. Det du selv skal tage stilling til er, om du vil bevare cross-sign-kæden af kompatibilitetshensyn (læg cross-cert manuelt i CA-lageret) eller skifte direkte til den nye korte kæde.
Serveren mangler at sende intermediate med i handshake. Tjek at intermediate ligger i Cert:\LocalMachine\CA (ikke kun i CurrentUser-lageret). Genstart derefter Windows. Chain-cachen ligger i lsass og HTTP.SYS, og en genstart af den enkelte tjeneste rammer den ikke. Verificér efterfølgende med vores SSL Scanner eller openssl s_client -connect dit-domæne.dk:443 -showcerts.
Kun for de algoritmer du faktisk udsteder fra. Bestiller du RSA-certifikater (default for de fleste Windows-installationer) er det RSA-cross-cert du skal bruge. ECC-cross-cert er kun nødvendigt hvis du har bestilt ECDSA-certifikater. Hvis du ikke ved hvilken nøgletype dine certifikater bruger, åbn dem i MMC og kig under Details på "Public key".

Skal vi installere cross-cert-kæden for jer?

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