Welk machinecertificaat biedt de Windows-VPN aan?
Meerdere machinecertificaten, één aangeboden, en de gateway weigert het. Vernauw de pool met de uitgever- en EKU-filters in plaats van iets te verwijderen.
De certificaten zijn geïnstalleerd, de privésleutels zijn aanwezig en de tunnel faalt nog steeds op authenticatie. Een machine met meerdere certificaten kan de VPN een kandidaat geven die niemand bedoelde, en de client heeft geen manier om te weten welke de gateway zou accepteren. De andere verwijderen is een selectiebeleid met gevolgen voor elke service op de machine. Vernauw in plaats daarvan de toegestane set en bevestig daarna welk certificaat daadwerkelijk is aangeboden.
Meerdere certificaten, één aangeboden
Native Windows-VPN-profielen met machinecertificaat-authenticatie bieden twee filters die de kandidaten beperken: een uitgeverfilter en een filter voor uitgebreid sleutelgebruik. Ze verkleinen de set waaruit de client mag kiezen. Ze herstellen geen ongeschikt certificaat en garanderen niet dat de server accepteert wat overblijft. Die grens is het waard om in het wijzigingslog vast te leggen, omdat de volgende lezer zal aannemen dat het filter meer besliste dan het deed.
De fout die ze aanpakken is smal en specifiek. Een geldig certificaat van de verkeerde autoriteit, of een dat is uitgegeven voor een doel dat de gateway niet accepteert, wordt gekozen vóór het bedoelde, wat een authenticatiefout naast een gezonde opslag oplevert. Twee filters maken daar een set van die klein genoeg is om over te redeneren, en de rest van deze pagina past ze in volgorde toe.
Inspecteer de opslag voordat u het profiel bewerkt
Lijst de kandidaten en hun eigenschappen op in de opslag die het profiel werkelijk gebruikt. Niets hier exporteert een privésleutel, en geen certificaat hoeft de machine te verlaten:
Get-VpnConnection -Name 'Office' | Select-Object Name, TunnelType, AuthenticationMethod
Get-ChildItem Cert:\LocalMachine\My | Select-Object Subject, Issuer, Thumbprint, NotAfter, HasPrivateKey, EnhancedKeyUsageList
Lees de uitvoer voor de eigenschappen waarvan de beslissing afhangt: een bruikbare privésleutel, een aanvaardbaar geldigheidsvenster, de bedoelde uitgever en de doelen in de extensie. Een certificaat kan tegelijk aanwezig, correct ingeschreven en nutteloos voor deze verbinding zijn. De kolom met de vingerafdruk is degene waarmee u later vergelijkt, dus bewaar de uitvoer.
Bevestig het profiel en zijn bereik voordat u bewerkt, want een machinecertificaat in LocalMachine, een gebruikerscertificaat voor EAP-TLS en een eigen privésleutelopslag van een toepassing zijn drie verschillende contexten. Gebruik het bereik voor alle gebruikers en een administratieve context wanneer het beheerde profiel daar staat. Een tweede profiel met een vergelijkbare naam aanmaken verbergt welke configuratie de verbinding werkelijk gebruikt.
Het uitgeverfilter wil een object
De uitgeverparameter verwacht een certificaatobject, geen weergavenaam en geen kale vingerafdrukreeks. Geef het certificaat van de goedgekeurde autoriteit door vanaf een pad dat u hebt gecontroleerd, in de opslag waar het thuishoort:
$issuerPath = Read-Host 'Certificate-provider path for the approved issuer CA'
$issuer = Get-Item -LiteralPath $issuerPath
Set-VpnConnection -Name 'Office' -MachineCertificateIssuerFilter $issuer
Vervang niet het eigen bladcertificaat van de client, een andere autoriteit met een vergelijkbaar onderwerp of een vers gegenereerde root, alleen omdat het parametertype het accepteert. Twee autoriteiten kunnen een onderwerpreeks delen, en daarom weegt het object zwaarder dan de tekst. De Microsoft-cmdletreferentie documenteert beide invoertypen, en het is de moeite waard die te lezen vóór de eerste bewerking in plaats van erna.
Het gebruiksfilter wil een OID-reeks
De parameter voor uitgebreid sleutelgebruik neemt OID-reeksen, en het doel voor clientauthenticatie is 1.3.6.1.5.5.7.3.2. Toepassing ervan beperkt de kandidaten tot certificaten die dat doel dragen, wat precies is wat een implementatie met clientauthenticatie wil:
Set-VpnConnection -Name 'Office' -MachineCertificateEKUFilter '1.3.6.1.5.5.7.3.2'
De waarde is een matrix, dus een implementatie die meerdere doelen nodig heeft, geeft ze als lijst door. Wat het filter niet kan, is een doel aan een certificaat toevoegen: het is een selectie-expressie die wordt geëvalueerd tegen ondertekende extensies, en geen filter herschrijft die, dus een certificaat zonder het doel moet opnieuw door de inschrijving.
Houd de EAP-configuratie voor gebruikerscertificaten gescheiden van het filteren van machinecertificaten, omdat ze op verschillende plaatsen leven en een wijziging in het ene zelden een fout in het andere verklaart. Controleer ook of het domein of het apparaatbeheer het profiel bezit, omdat een lokale bewerking bij de volgende beleidsvernieuwing kan worden vervangen zonder dat iemand de machine aanraakt.
Bewijs welk certificaat de client aanbood
Breng een nieuwe verbinding tot stand en lees het authenticatiebewijs van client en server voor de identiteit die u bedoelde. Wanneer meer dan één certificaat aan de filters voldoet, is het resultaat een kleinere pool in plaats van een vastgezet blad, dus de volgende poging kan een ander lid kiezen. Noteer de vingerafdruk die in dat bewijs verschijnt en vergelijk die met de vingerafdruk die u uit de opslag hebt vastgelegd.
Een geslaagde opdracht is geen geslaagde authenticatie. Het resultaat dat het waard is te noteren, is dat het bedoelde certificaat authenticeert onder het beheerde beleid, terwijl elk ongerelateerd certificaat beschikbaar blijft voor de services die daarvan afhangen. Als de fout beide filters overleeft, zijn de resterende kandidaten de volgende plek om te kijken, niet het profiel als geheel.