Is --key-password van OpenConnect je VPN-accountwachtwoord?
De optie --key-password van OpenConnect ontgrendelt een lokale privésleutel. Het accountwachtwoord authenticeert bij de gateway, en het ene vervangt nooit het andere.
Lees de naam van de optie letterlijk. Hij noemt een sleutel, en de verwarring begint wanneer het bestand dat wordt ontgrendeld wordt aangezien voor het account dat wordt geauthenticeerd. Plak het accountwachtwoord in die optie en de client probeert er een sleutelbestand mee te openen, wat mislukt om redenen die niets met de VPN-aanmelding te maken hebben.
Het verwarrende is dat één verbinding beide geheimen legitiem nodig kan hebben. Authenticatie met een clientcertificaat kan een versleutelde sleutel vereisen, en dezelfde gateway kan na acceptatie van het certificaat nog een gebruikersauthenticatie-uitwisseling uitvoeren. Geen van beide geheimen vervult de andere fase, en een fout in het ene lijkt van buitenaf sterk op een fout in het andere.
Twee geheimen, twee verschillende taken
Lees de rollen als bestandstoegang tegenover netwerktoegang. Het sleutelwachtwoord ontsleutelt de privésleutel in PEM-formaat die in --sslkey staat, zodat het TLS-clientcertificaat kan worden getoond. Die ontsleuteling gebeurt lokaal, binnen het clientproces, en de wachtwoordzin zelf reist nooit naar de gateway. Wat de gateway ziet, zijn het certificaat en een handtekening die met de sleutel is gemaakt. De handleiding van OpenConnect houdt --key-password naast --certificate en --sslkey, en in builds die een sleutel in een TPM kunnen gebruiken draagt dezelfde optie in plaats daarvan het wachtwoord van de opslaghoofdsleutel.
Het accountwachtwoord is van een ander soort. Het gaat in de authenticatie-uitwisseling: een formulier met gebruikersnaam en wachtwoord, een token, een SAML-ronde of een combinatie die de gateway aankondigt. Sommige implementaties vragen er helemaal niet om wanneer het certificaat de enige factor is, en andere vragen er zelfs na een certificaat om, omdat het certificaat het apparaat bewijst terwijl het account de persoon bewijst.
Het mengen van de twee levert misleidende fouten op. Een gateway die een aanmelding weigert, meldt meestal een authenticatiefout, terwijl een verkeerde sleutelwachtwoordzin meestal eerder mislukt, wanneer de TLS-laag het sleutelbestand niet kan lezen. Dat zijn verschillende fasen met verschillende oplossingen, en de namen lijken genoeg op elkaar dat mensen ze verwisselen en daarna het verkeerde logboek najagen. Let op welke prompt verscheen voordat je een instelling wijzigt, want de formulering van de prompt is de goedkoopste diagnose die je hebt.
Wanneer het sleutelwachtwoord echt nodig is
De optie heeft alleen zin wanneer er een versleutelde sleutel te ontgrendelen is. Als je verbindt met een gebruikersnaam en wachtwoord en zonder clientcertificaat, heeft --key-password niets om op in te werken, en het toevoegen verandert niets. Als je verbindt met --certificate en --sslkey, bepaalt het formaat van het sleutelbestand zelf of er überhaupt om een wachtwoordzin wordt gevraagd.
Beide geheimen in één commando komen vaak voor in beheerde omgevingen: een apparaatcertificaat in een versleutelde sleutel, plus een aanmelding per gebruiker. De juiste volgorde is de client lokaal om de sleutelwachtwoordzin te laten vragen, de certificaathandshake af te ronden en daarna de accountprompt van de gateway apart af te handelen. Pogingen om beide vooraf via één hergebruikt script te vullen, zijn waar de verwarring meestal begint.
Een nuttige diagnose is kijken wanneer de fout optreedt. Als de client stopt voordat enige netwerkaauthenticatie begint, verdenk dan het sleutelbestand, het formaat of de wachtwoordzin. Als de TLS-sessie tot stand komt en de gateway de gebruiker daarna weigert, heeft de sleutel zijn werk gedaan en is de accountuitwisseling het probleem.
Houd beide geheimen buiten de shell-geschiedenis
Opdrachtregelargumenten zijn leesbaar voor andere lokale gebruikers via de procestabel en belanden vaak in de shell-geschiedenis, in scripts en in supporttranscripten. OpenConnect kan het accountwachtwoord met --passwd-on-stdin van de standaardinvoer lezen, en de sleutelwachtwoordzin kan uit een interactieve prompt of een agent komen in plaats van uit een argument. Geen enkel mechanisme maakt het geheim op zichzelf veilig, maar beide houden het weg van de meest blootgestelde plekken.
Bestanden verdienen dezelfde zorg. Een script dat een wachtwoordzin naar een tijdelijk bestand schrijft, moet dat met beperkte rechten aanmaken, bij afsluiten verwijderen en wereldleesbare mappen vermijden. Een wachtwoordzin die de sessie in een tijdelijke map overleeft, is een kopie die je vergat te maken. Omgevingsvariabelen zijn zichtbaar voor kindprocessen en worden vaak door debugtools weergegeven, dus ze zijn geen gratis verbetering ten opzichte van argumenten.
Diagnostische uitvoer is het stille lek. Clientlogs met meer detail kunnen aanvraaglichamen of optiewaarden tonen, en een gekopieerd terminaltranscript is makkelijk in een ticket te plakken, dus lees de uitvoer voordat je die deelt.
Een dode bureaubladknop is een ander defect
Een bureaublad-VPN-item dat een spinner toont en daarna niets, is meestal helemaal geen authenticatieprobleem. De knop hoort bij een netwerkbeheerder, een leveranciersapplet of een plug-in die OpenConnect namens jou start, en een ontbrekend onderdeel of onleesbaar profiel kan precies dat symptoom veroorzaken. Zoek uit welk proces de knop start en lees de fout voordat je inloggegevens aanraakt.
Het is verleidelijk de certificaatverificatie te versoepelen of een controle uit te schakelen wanneer de GUI weigert te verbinden. Dat maakt van een clientintegratiefout een beveiligingsverlaging en lost het startprobleem zelden op. Laat de serververificatie intact, bevestig dat het profiel naar de bedoelde gateway wijst en controleer of de helper die de GUI verwacht daadwerkelijk is geïnstalleerd.
Een korte checklist scheidt de gevallen. Een lokale fout voordat er een pakket vertrekt, wijst op de sleutel of de clientinstallatie. Een weigering door de gateway na de TLS-sessie wijst op de accountuitwisseling. Een knop die de client nooit start, wijst op de bureaubladintegratie. Drie verschillende defecten, waarvan er één een wachtwoord is dat je op het punt stond in het verkeerde vak te plakken.