Giter VIP home page Giter VIP logo

geantlink's Introduction

GÉANTLink

Suite of EAP supplicants for Microsoft Windows - IEEE 802.1X clients for enterprise network authentication

Features

  • Integrates into Windows seamlessly
  • Wired and wireless network support

Authentication methods

  • EAP-TTLS with the following inner methods:
    • PAP
    • MSCHAPv2
    • EAP-MSCHAPv2
    • EAP-GTC: Challenge/Response and Password authentication modes
    • System-installed EAP method chaining (experimental)

Security

  • Microsoft Windows Credential Manager stored user credentials
  • User credentials can be shared between different network profiles, regardless of their connection: wired or wireless
  • Encrypted EapHost inter-process communication
  • TLS:
    • Separate trusted root CA list
    • Configurable list of accepted server names
    • Post-authentication CRL check

Diagnostics

  • Reporting to Event Log channels: Operational and Analytic verbosity
  • Real-time event monitoring utility

User interface

  • Customizable helpdesk contact information
  • Lockable network profile configuration

Deployment

  • Released as multi-lingual x86, x64, and ARM64 MSI packages; Group Policy deployment supported
  • MsiUseFeature utility for the product install state testing (for embedding this product into other setup packages)
  • CredWrite utility for automated user credential import to Credential Manager
  • WLANManager utility to allow network profile configuration dialog shortcuts

Supported operating systems

  • Windows Vista, Windows Server 2008
  • Windows 7, Windows Server 2008 R2
  • Windows 8 Desktop, Windows Server 2012
  • Windows 8.1 Desktop, Windows Server 2012 R2
  • Windows 10 Desktop, Windows Server 2016

Download

Binaries are available for download here.

Building

Building Environment Requirements

  • Microsoft Windows Vista or later
  • Microsoft Visual Studio 2019
  • msgfmt.exe from gettext; Hint: Poedit contains up-to-date binary Win32 compiled gettext-utilities. Install it and add GettextTools\bin folder to the system path.
  • sed.exe and grep.exe Hint: Git for Windows contains up-to-date set of GNU utilities.
  • MsiDb.Exe and other command line utilities for MSI packaging distributed as a part of Microsoft Windows SDK (installed with Visual Studio). Add SDK's Bin folder to the system path.

wxWidgets

This product is using wxWidgets static libraries. Since upstream wxWidgets libraries don't support ARM64 yet, a clone with ARM64 support was prepared at GitHub.

Compiling wxWidgets x86 static libraries

  1. Start command prompt
  2. Change working folder to build\msw
  3. Run: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsamd64_x86.bat"
  4. Run: nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=142
  5. Run: nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=142 BUILD=release

Compiling wxWidgets x64 static libraries

  1. Start command prompt
  2. Change working folder to build\msw
  3. Run: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
  4. Run: nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=142 TARGET_CPU=X64
  5. Run: nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=142 TARGET_CPU=X64 BUILD=release

Compiling wxWidgets ARM64 static libraries

  1. Start command prompt
  2. Change working folder to build\msw
  3. Run: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat"
  4. Run: nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=142 TARGET_CPU=ARM64 USE_OPENGL=0
  5. Run: nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=142 TARGET_CPU=ARM64 USE_OPENGL=0 BUILD=release

Specifying wxWidgets path

The product compilation references wxWidgets libraries using WXWIN environment variable. Please set it to wxWidgets folder (i.e. C:\SDK\wxWidgets).

Digital Signing of Build Outputs

In order to have the build process digitally sign output files, one should provide the following:

  1. A signing certificate installed in the current user’s certificate store.
  2. The following variables in the environment:
  • ManifestCertificateThumbprint - set the value to certificate’s SHA1 thumbprint (hexadecimal, without spaces, i.e. bc0d8da45f9eeefcbe4e334e1fc262804df88d7e).
  • ManifestTimestampRFC3161Url - set the value to URL used to perform RFC3161 timestamp signature (i.e. http://sha256timestamp.ws.symantec.com/sha256/timestamp). In order to perform timestamp signing successfully, the computer running the build should be online and able to access this URL.

Please note that only Release builds are configured for timestamp signing. Debug configurations do not attempt to timestamp sign the resulting DLL and EXE files in order to speed up the building process and enable offline building.

Building

Building in Visual Studio IDE

This product has some submodules. When cloning Git repository, make sure to use --recursive Git switch to clone submodules too. Example: git clone --recursive "https://github.com/Amebis/GEANTLink.git" "C:\Projects\GEANTLink"

After clone is complete, grant Users local group read and execute permissions to output subfolder (when working folder is private). This allows EapHost service to load DLL, and Event Viewer to display events.

The product can be build and debugged opening GEANTLink.sln in Visual C++ IDE.

Before one can attempt to debug EAP DLLs, you should run nmake register from an elevated command prompt. See Building in command line chapter below.

Next, one must configure a network profile to actually use one of this product's EAP modules for the authentication.

EAP modules are divided into two DLLs: backend (i.e. EAP-TTLS.dll) and GUI (i.e. EAP-TTLS_UI.dll).

Backend DLL

The backend DLL is loaded by Eap3Host.exe process when connecting to the network. One approach to debug the module is to start Visual C++ elevated, open GEANTLink.sln, and attach to the running Eap3Host.exe process.

On initial connection attempt Eap3Host.exe will load the DLL and will not release it until EapHost service is restarted. To release our DLL (i.e. for rebuild) you have to restart EapHost service manually or run nmake register again.

To debug early life of our backend DLL, uncomment Sleep(10000) in DllMain() of the module, and set breakpoints. This should give you plenty of time to catch emerging Eap3Host.exe process and attach the debugger to it before our DLL starts servicing authentication.

GUI DLL

The GUI DLL is loaded by DllHost.exe process on XML profile configuration import/export and when interactive user interface is required.

A few seconds after desired function call has finished, DllHost.exe terminates and releases the DLL.

To debug early life of our GUI DLL, uncomment Sleep(10000) in DllMain() of the module, and set breakpoints. This should give you plenty of time to attach the debugger to DllHost.exe process before our DLL starts.

Building in command line

Open Developer Command Prompt for VS 2019 for building.

Use Microsoft NMAKE to build the project.

Command Explanation
nmake Clean Deletes all intermediate and output files.
nmake Register Builds a debug version of project, registers DLLs, and adds Start Menu shortcuts. For testing and development purposes only! Requires elevated command prompt.
nmake Unregister Removes Start Menu shortcuts, unregisters DLLs. For testing development purposes only! Requires elevated command prompt.
nmake Setup Builds a release version of project and release MSI setup files. The resulting files can be found in output\Setup folder.
nmake SetupDebug Builds a debug version of project and debug MSI setup files. The resulting files can be found in output\Setup folder.

The /ls flag can be appended to the commands above to reduce NMAKE’s verbosity. You can combine multiple targets (i.e. nmake Unregister Clean). Please, see NMAKE reference for further reading.

Translating into your language

This product is fully localizable. We kindly invite you to help translating it on Transifex.

geantlink's People

Contributors

rozmansi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

geantlink's Issues

Simplify credential configuration

There is confusion regarding credential management and terminology.

Term Explanation
pre-shared credentials credentials provided in network profile configuration
own credentials credentials stored in Windows Credential Manager

Proposed modifications:

  • Pre-shared credentials should be non-editable via UI.
  • When pre-shared credentials are configured, user cannot modify them or switch to his own credentials.
  • Following the previous changes, UI should be simplified to allow manipulation of own-credentials only, also eliminating the "own/pre-shared credentials" terminology completely.

GUI Localization

Currently the GUI is English only. However, everything is set for localization.

Missing:

  • Language selection mechanism:
    • Probably a registry setting Tomasz can provision during setup;
    • Other option is automatic according to Windows language
  • Translations (Transifex)

WLANManager

  • Write a small utility to open Wireless Network Properties dialog of a given wireless profile
  • Instruct Tomasz, how to install shortcut to it

No credential window appears with 1.2g

Hello Simon,

thank you very much for the new release. Sadly, now we have the problem, that sometimes no window for the credentials appears. Do you have any idea for this problem?

I will try to collect more information.

CredWrite extension for client certificates

UI introduced client credentials for TLS based methods too. Namely client digital certificates.

As EAP-TTLS usually requires no special client certificates, extend the CredWrite utility at least to mark the given profile as "no client certificate required".

Create a new profile using GUI

Currently it is not possible to create a new wireless network profile using Network and Sharing Center. New profiles can only be imported using XML and netsh.

Add support for creating a new profile settings from scratch using GUI alone.

Windows GPO settings

Can you provide info how to or add feature to make profile with settings to deploy it via GPO for windows 10?
For example. I want to transfer your app via GPO and create WLAN access point with ttls+pap. assign CA certificate to that WLAN but let user to choose a password.
In latest Versions of windows I can change settings for connection only when it is connected.
if it is not working or configured improperly there is no way change settings because that dialog box was removed from control panel.
The only way to change settings is to remove access point and create it once again.
so it would be nice if you add availability to change that settings in your app.
Thanx

Windows 7 supplicant has no usable cipher suite. Does the GEANTLink help me?

I am trying to connect to eduroam with Windows 7. The problem is that cipher suite TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) is needed. Does the GEANTLink offer any solution of this problem? I have installed v1.2c and instead of PEAP I am trying GEANTLink EAP-TTLS, but "ERROR_PPP_INVALID_PACKET returned...

TLS 1.2 request

Hi
I was test alpha 15

  • work fine

but TLS 1.0 work
-- alpha 15 : TLS 1.0
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: Peer sent flags ---
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: [eaptls verify] = ok
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: Done initial handshake
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: (other): before/accept initialization
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: TLS_accept: before/accept initialization
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: <<< recv TLS 1.0 Handshake [length 005a], ClientHello
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: TLS_accept: SSLv3 read client hello A
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: >>> send TLS 1.0 Handshake [length 0039], ServerHello
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: TLS_accept: SSLv3 write server hello A
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: >>> send TLS 1.0 Handshake [length 066c], Certificate
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: TLS_accept: SSLv3 write certificate A
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: >>> send TLS 1.0 Handshake [length 00cb], ServerKeyExchange
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: TLS_accept: SSLv3 write key exchange A
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: >>> send TLS 1.0 Handshake [length 0004], ServerHelloDone
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: TLS_accept: SSLv3 write server done A
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: TLS_accept: SSLv3 flush data
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: TLS_accept: Need to read more data: SSLv3 read client certificate A
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: TLS_accept: Need to read more data: SSLv3 read client certificate A
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: In SSL Handshake Phase
Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: In SSL Accept mode

Tue Aug 30 11:26:15 2016 : Debug: (2) eap_ttls: [eaptls process] = handled

but window now support TLS 1.2
--- Windows TLS 1.2
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: Continuing EAP-TLS
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: Peer sent flags --L
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: Peer indicated complete TLS record size will be 182 bytes
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: Got complete TLS record (182 bytes)
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: [eaptls verify] = length included
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: <<< recv TLS 1.2 [length 0046]
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: TLS_accept: SSLv3 read client key exchange A
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: TLS_accept: SSLv3 read certificate verify A
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: <<< recv TLS 1.2 [length 0001]
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: <<< recv TLS 1.2 [length 0010]
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: TLS_accept: SSLv3 read finished A
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: >>> send TLS 1.2 [length 0001]
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: TLS_accept: SSLv3 write change cipher spec A
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: >>> send TLS 1.2 [length 0010]
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: TLS_accept: SSLv3 write finished A
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: TLS_accept: SSLv3 flush data
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: (other): SSL negotiation finished successfully
Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: SSL Connection Established

Tue Aug 30 11:31:31 2016 : Debug: (8) eap_peap: [eaptls process] = handled

check it
Thanks

Utility to check installation state

Perform a silent check if MSI is installed to allow conditionaled launch of msiexec.

Specifically if given feature is installed. The feature should be passed as a command line parameter (i.e. featEAPTTLS), to allow finer control.

No UAC prompt must be displayed.

The utility should return various codes to indicate MSI installation condition.

EAP Connection Configuration stopped working after Switch to Visual Studio 2017

On Windows 7 SP1 clean install (without any additional net framework installed) when I try to run Settings (EAP Connection Configuration) in the Authentication tab on Local Area Connection Properties nothing happens. What do I need to install to be able to run newer versions than 1.2c on windows 7 systems. I am guessing I need to install net framework 4+ or something similar but I just wanted to ask first before trying different framework versions.
Version 1.2c and below run without any problems.
Thanks for developing an amazing application.

Compileable solution

  • Update building process it will build on a clean machine outside Amebis' environment
  • Document building process: instructions, samples, readme...

Close orphaned credential prompts

If user doesn't finish the credential prompt soon enough, a new dialog is spawned. Even if the now-expired dialog is finished, EapHost no longer observes it. The same moment it decided it is stale and launched the new one, the old one is orphaned.

Add window search to credential dialog and close the orphaned one.

How do I set a connection?

Hi,

I have installed the MSI package. How can I set the WiFi parameters? I would like to connect to a TTLS-PAP WiFi Network. I click on the SSID but I only get the regular Windows prompt. Is there any GUI?

Thanks!!

Computer authentication

Study the behaviour of per-computer connections (where to get credentials from, how to set them), and make it work.

Windows 11 Support

Would there be any plans to update this package to support Windows 11?

Finish EventMonitor

Add a toolbar:

  • Copy log to clipboard
  • By default EAPHost and "Verbose" messages should be hidden
  • Toggle auto-scroll
  • Clear log
  • Consider localizing specific most important messages

TTLS+MSCHAPv2

Add support for Microsoft MSCHAPv2 inner authentication

Credentials still missing

Hallo Simon,
I have the problem, that GÉANTLink starts itself several times to ask for the credentials. Do you have any idea how to fix this?

I tested it under Windows 10 build 1803 and 1809. But it works earlier. I will test it soon with 1904

TTLS "User Certificate" not necessary

Hi.
As you know, below red chapter is not necessary at TTLS
It is used at EAP-TLS, but not support yet.
So, I think this chapter will hidden until support EAP-TLS
Chack it
Thanks

cert

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.