You're setting up a site-to-site VPN or an L2TP/IPsec connection, and Windows throws 0x0000361D (ERROR_IPSEC_IKE_FAILSSPINIT) in the event log — usually right after a Windows update, or when you've migrated a VPN config from an older Server 2008 box. The exact message: Failed to obtain the security function table dispatch address from the SSPI. What's actually happening here is the IKE service (IKEEXT) tries to call into the Security Support Provider Interface (SSPI) to grab function pointers for authentication, and the SSPI returns garbage or nothing at all.
Root cause: corrupted crypto registry or missing Schannel provider
The SSPI dispatch table lives under HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL and HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\Security. When that table goes missing — typically after a botched crypto update or an antivirus nuking registry entries — the IKE service can't load the security functions it needs. The error code 0x0000361D specifically means the dispatch address lookup for the security function table failed. This isn't a network misconfig; it's a local system state problem.
I've seen this happen after uninstalling a third-party VPN client that trampled the Schannel registry keys, and after certain KB4507459 updates on Server 2016. The fix is to rebuild that registry branch and re-register the crypto providers.
The fix: rebuild SSPI dispatch and re-register Schannel
- Open an elevated command prompt — right-click Command Prompt, run as admin. Don't skip this; registry changes require SYSTEM-level access.
- Register/re-register the security providers — run these in order:
Why step 3 works: This re-registers the COM-invocable security modules. Theregsvr32 /s schannel.dll regsvr32 /s rsaenh.dll regsvr32 /s msv1_0.dll regsvr32 /s wdigest.dll regsvr32 /s kerberos.dll regsvr32 /s secur32.dll/sflag suppresses success dialogs, so you won't see errors unless something's deeply wrong. If any fails here, you're looking at a corrupted system file — run SFC /scannow next. - Fix the SSPI dispatch registry key — open regedit, go to:
Check for a value namedHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SecuritySecurityProvidersof type REG_MULTI_SZ. Its data should contain:
One per line. If it's missing or truncated, create it. If it's present but you still get the error, delete the entireschannel.dll msv1_0.dll wdigest.dll kerberos.dll negotiate.dllSecuritykey and restart — Windows regenerates it on boot with defaults. - Restart the IKE and AuthIP services:
This forces IKEEXT to re-read the SSPI dispatch table. Do this after every registry change — don't assume a reboot will happen automatically.net stop IKEEXT && net start IKEEXT net stop AAEsvc && net start AAEsvc - Test the connection — trigger the same VPN or IPsec policy that failed before. Check event log for 0x0000361D again. If it's gone, you're done. If not, move to the next step.
If it still fails: deeper system corruption
Sometimes the registry fix isn't enough because the actual DLLs are missing or the system file checker can't fix them. Here's what to try:
- Run SFC /scannow — this will replace corrupted Schannel or security DLLs. Takes 10-15 minutes. If SFC finds nothing but the error persists, run DISM /Online /Cleanup-Image /RestoreHealth.
- Check for a pending Windows update — I've seen KB5034439 (March 2024) fix this exact issue on Server 2022. If you uninstalled a crypto-related update, reinstall it.
- Verify Schannel.dll is present — open
C:\Windows\System32and check forschannel.dll. If it's missing, copy it from a same-version Windows machine, or run an in-place upgrade repair. - Last resort: reinstall the IPsec role — on Server, go to Server Manager > Remove Roles and Features, uncheck IPsec (under Remote Access), reboot, re-add it. This blows away the registry keys and reinitializes everything from the baseline.
One gotcha: if you're running a third-party firewall or VPN client (especially those hooking LSP), they can block the SSPI dispatch registration. Temporarily uninstall them, apply the fix, then reinstall. I've had to do this twice – once with an old Check Point endpoint and once with a SonicWALL NetExtender that left junk in the SecurityProviders key.
After all this, the error should be gone. The root cause is almost always a broken registry entry for the SSPI dispatch table – not a network problem. So don't waste time checking firewall rules or DNS first. Fix the local system state, and 0x0000361D disappears.