EAPType
list. It is ignored and has no effect unless
EAP authentication is requested. This parameter is not set by default,
which means that Radiator does not perform EAP authentication by default.
The allowed values for EAPType
are given by the
following table.EAPType | Explanation | |
MD5 |
This is the default value. Use
MD5-Challenge as per RFC 3748. This can be used
with any authentication method that provides a plaintext
password, such as <AuthBy FILE> ,
<AuthBy SQL> , and
<AuthBy LDAP2> . See
goodies/eap_md5.cf g for example
configuration. MD5-Challenge is an old alias
for MD5 . |
|
OTP |
Use One-time-password authentication as per RFC 3748.
This requires a one-time password authenticator such as
<AuthBy OTP> .
One-Time-Password is an old alias for
OTP . |
|
GTC |
Use Generic Token authentication as per RFC 3748. This
requires a token-based authenticator such as
<AuthBy OTP> , <AuthBy
ACE> , or <AuthBy
RSAAM> . Generic-Token is an old
alias for GTC . |
|
TLS |
Use Transport Layer Security (TLS). This can be used with
any authentication method. TLS checks that the client
certificate is valid and has a short enough certificate chain to
the root certificate. It requires an SSL certificate for the
server and one on each client requiring authentication. See
goodies/eap_tls.cfg for example
configuration. |
|
TTLS |
Use Tunnelled TLS as required by Funk Odyssey wireless
clients. This can be used with any authentication method. TTLS
does not usually involve a client certificate, but the client
may be configured to check the server's SSL certificate. See
goodies/eap_ttls.cfg for example
configuration. |
|
PEAP |
Use PEAP tunnel as used by Windows XP and others. This
can be used with any authentication method. See
goodies/eap_peap.cfg for example
configuration. |
|
LEAP |
This is compatible with Cisco LEAP authentication, a
proprietary authentication protocol. LEAP requires an
authenticator that supplies plaintext passwords, such as
<AuthBy FILE> , <AuthBy
SQL> , or <AuthBy
LDAP2> , or MSCHAPV2, such as <AuthBy
LSA> . |
|
SIM |
Use EAP-SIM which authenticates against SIM cards. This requires the additional EAP-SIM bundle from Radiator Software. | |
AKA |
Use EAP-AKA. This requires the additional EAP-SIM bundle from Radiator Software, which contains support for EAP-AKA. | |
AKA-PRIME |
Use EAP-AKA'. This requires the additional EAP-SIM bundle from Radiator Software, which contains support for EAP-AKA'. | |
MSCHAP-V2 |
Use EAP-MSCHAPV2, which is commonly tunneled inside PEAP | |
TNC |
Support EAP-TNC, a protocol for assessing the security posture of end points. | |
FAST |
Use EAP-FAST, a rarely-used protocol from Cisco. | |
PAX |
Use EAP-PAX (Password Authenticated Exchange) | |
PSK |
Use EAP-PSK (Pre-Shared Key). | |
PWD |
Use EAP-pwd, a method which uses a shared password for authentication. |
anonymous
. Special characters can be used. %0 is replaced
by the EAP identity of the inner EAP request.EAPAnonymous
name, it is used to choose a local Realm
to handle the inner authentication.EAPTLS_CAFile
, then in
EAPTLS_CAPath, so there usually is no need to set
both.EAPTLS_CAFile
is expected to contain a
stack of CA one or more CA certificates that will be used to validate
client certificates. The list of CA issuers in that is also sent to the
client during handshaking to tell the client which certificates Radiator
accepts.EAPTLS_CAFile
, then in
EAPTLS_CAPath
, so there usually is no need to set
both. When Certificate Revocation List (CRL) checks are enabled, this
directory is also used by TLS library to look for CRL files. Special
characters are supported.EAPTLS_CertificateType
parameter. The certificate
file can also contain the server's TLS private key if the
EAPTLS_PrivateKeyFile
parameter specifies the same
file. If the server certificate is a chain of certificates, use
EAPTLS_CertificateChainFile
instead.EAPTLS_CertificateChainFile
can be used instead of
EAPTLS_CertificateFile
for explicitly constructing
the server certificate chain which is sent to the client.EAPTLS_CertificateChainFile
to specify a chain of
certificates that the server uses to identify itself to the client. If
there is only one server certificate, and not a chain, you can use
EAPTLS_CertificateFile
instead.EAPTLS_CertificateFile
. The options are:PEM
ASN1
ASN1
.EAPTLS_CertificateFile
). If the private key is
encrypted,which is usually the case,
EAPTLS_PrivateKeyPassword
is the key to decrypt
it.EAPTLS_PrivateKeyFile
. # Do not allow TLSv1 EAPTLS_Protocols TLSv1.1, TLSv1.2
DEFAULT:!EXPORT:!LOW
.# Exclude cipher suites using RC4 too EAPTLS_Ciphers DEFAULT:!EXPORT:!LOW:!RC4
# System default level 2 is too strict for this module EAPTLS_Ciphers DEFAULT:!EXPORT:!LOW@SECLEVEL=1
EAPTLS_SecurityLevel
is an integer
parameter that sets the SSL library security level for the enclosing
clause. Security levels were added in OpenSSL 1.1.0 and are detailed in
OpenSSL manual page SSL_CTX_set_security_level
. There
is no default and the system default is used. This parameter may be needed
if you see unexpected TLS errors with older clients.EAPTLS_SecurityLevel
is not needed. For more
information, see Section 3.10.12. EAPTLS_Ciphers# The default on this system, 2, is too strict for our clients, # lower it for this Radiator module EAPTLS_SecurityLevel 1
# Curves often have multiple aliases. Need OpenSSL name here. # openssl ecparam -list_curves EAPTLS_ECDH_Curve prime256v1
2048
, but many
EAP clients, routers, and wireless Access Points have limitations that
require EAPTLS_MaxFragmentSize
to be set as low as
1000 or less. Setting this number too small can result in excessive RADIUS
request round trips during EAP TLS authentication. This slows down the
authentication process. Setting this number too large can result in
failure to complete TLS authentication for some types of clients and
devices. Many customers find that 1300 is a good compromise.EAPTLS_MaxFragmentSize
, which may result in
fewer RADIUS requests in the EAP conversation which reduces the
authentication time and lowers to load on both the RADIUS client (switch,
WLAN controller) and RADIUS server.EAPTLS_MaxFragmentSize
,
then Radiator uses the reported Framed-MTU to limit fragment size when
doing TLS, TTLS, PEAP, and PSK.EAPTLS_CRLFile
parameter, similar to base CRL files.EAPTLS_CRLCheckUseDeltas
is
currently experimental.EAPTLS_CRLCheckUseDeltas
, note the following
requirements and restrictions:EAPTLS_CRLCheck
must be enabled in Radiator
configurationEAPTLS_CRLCheckUseDeltas
EAPTLS_CRLCheckAll
is not enabled by default. The CRL
files for the intermediate CAs must be found, otherwise the certificate
check fails. See Section 3.10.22. EAPTLS_CRLFile for the
details.EAPTLS_CRLCheck
must be enabled for
any certificate checks to happen.EAPTLS_CRLCheck
, this optional parameter specifies
one or more CRL files that are used to check client certificates for
revocation. These files are also used when
EAPTLS_CRLCheckAll
is enabled. Special characters are
supported.EAPTLS_CAPath
directory. Setting up this directory is
described in Section 3.11.3. TLS_CAPath. In this case
you do not need to configure EAPTLS_CRLFile
.EAPTLS_CRLFile
parameters. The intended
way CRL reloading works is this: Each CRL file named with
EAPTLS_CRLFile
will be automatically reloaded and
reread at the start of each new EAP-TLS, EAP-TTLS or PEAP session if the
modification date of the named CRL file has changed since the last time it
was loaded. If the CRL for a particular issuer changes, it is sufficient
to replace the existing CRL file with the newer version and Radiator will
reload the new CRL when required.EAPTLS_CRLFile %D/crls/revocations-*.pem
# Disable session resumption EAPTLS_SessionResumption 0
%1:%3:%n
, which means that TLS session resumption is
allowed if the resumed and the full authentication are processed by the
same Handler, EAP Type, and original user name.
%0
is replaced by value referring to Client,
%1
is replaced by value referring to Handler,
%2
is replaced by value referring to AuthBy, and
%3
with the current EAP type number.EAPTLS_SessionContextId
:# Allow resumption when using the same Client and Handler EAPTLS_SessionContextId %0%1
EAPTLSRewriteCertificateCommonName s/testUser/mikem/
0
. Set it to 1
for unusual
clients.<Handler ConvertedFromEAPMSCHAPV2=
1>
.goodies/eap_peap_mschap_proxy.cfg
in your
distribution for an example of how to configure convert and proxy
system.Net::SSLeay
module 1.37 or later.# Require just one policy EAPTLS_PolicyOID 1.3.6.1.4.1.9048.33.2
goodies/eap_leap_proxy.cfg
in your
distribution for an example of how to configure such a convert and proxy
system.253
, which is compatible with RADIUS
protocol.EAP_PEAP_MSCHAP_Convert
instead. For more information, see Section 3.10.29. EAP_PEAP_MSCHAP_Convert.EAP_MSCHAPv2_UseMultipleAuthBys
in all AuthBys
within Handler or AuthBy GROUP. This flag is not set by
default.EAP_MSCHAPv2_UseMultipleAuthBys
:
<Handler> AuthByPolicy ContinueUntilAcceptOrChallenge <AuthBy SQL> EAPType MSCHAP-V2 EAP_MSCHAPv2_UseMultipleAuthBys </AuthBy> <AuthBy SQL> EAPType MSCHAP-V2 EAP_MSCHAPv2_UseMultipleAuthBys </AuthBy> </Handler>
User-Name
to certificate
CN
or subjectAltName
and then
using the matched value to fetch the user from the user database. EAPTLS_CommonNameHook
and EAPTLSRewriteCertificateCommonName
are not run and the user's check and reply attributes are not applied
because no user lookup is done. This allows Radiator to mimic the
behaviour of some other RADIUS servers.EAPTLS_OCSPCheck
is allowed and EAPTLS_CertificateVerifyHook
is run.$_[0]
: $matchedcn
, the
CN that matched the user name or identity with or without the domain
name. $matchedcn
is the CN in the certificate
that was matched against either the user name or EAP identity. It is
normally used as the user name to do the user database lookup, but you
can return a new name from this function.$_[1]
: $x509_store_ctx
,
the EAP SSLEAY store context (you can pass this to
Net::SSLeay::X509_STORE_CTX_get_current_cert)$_[2]
: $cert
, the
current certificate, result of Net::SSLeay::X509_STORE_CTX-
_get_current_cert($x509_store_ctx)$_[3]
: $subject_name
,
the certificates subject name, result of
&Net::SSLeay::X509_get_subject_name($cert)$_[4]
: $subject
, the
certificate subject, result of
&Net::SSLeay::X509_NAME_oneline($subject_name)$_[5]
: $p
, the current
Radius::Radius request$matchedcn
, which is used to do the user database
lookup. If it returns undef, the certificate verification is deemed to
fail with the OpenSSL error
X509_V_ERR_APPLICATION_VERIFICATION.EAPTLS_CertificateVerifyFailedHook
specifies a Perl function that is called if the certificate cannot be
verified. It is an optional parameter and is used with EAP-TLS
authentication. It is passed the certificate (if present), and various
other details.$cert
is
not always present. An example of such case is a policy OID mismatch
.EAPTLS_CertificateVerifyFailedHook
is passed
the following arguments:$_[0]: $verify_error
$_[1]: $x509_store_ctx
$_[2]: $cert
$_[3]: $subject_name
$cert
is undefined.$_[4]: $subject
$cert
is
undefined.$_[5]: $p
EAPTLS_CertificateVerifyFailedHook
must
return a single value. This value is used as an OpenSSL error code to set
the verify result code as follows:X509_V_ERR_APPLICATION_VERIFICATION
.EAPTLS_CertificateVerifyFailedHook
. This
configuration accepts all certificates. Any additional authorisation must
be done later.
EAPTLS_CertificateVerifyFailedHook sub { return 0; }
10
is
X509_V_ERR_CERT_HAS_EXPIRED
.
EAPTLS_CertificateVerifyFailedHook sub { \ if ($_[0] == 10) { return 0; } else { return $_[0]; } }
EAPTLSRewriteCertificateCommonName
is executed) against the User-Name (with and without any trailing @domain)
and the EAP identity (with and without any trailing @domain). If a match
is found, that is the authenticated CN, and it is the name that is be used
to look up the user name in the user database.EAPTLS_CommonNameHook
is defined, it returns the user
name that matches with the CN.$_[0]
: the CN$_[1]
: the User-Name from the incoming
request$_[2]
: the EAP Identity of the TLS
handshakeEAPTLS_TraceState
is a flag parameter
that turns on TLS state tracing for TLS-based EAP modules such as EAP-TLS,
EAP-TTLS and PEAP. This may be useful for additional debugging of TLS
handshake processing. EAPTLS_TraceState
is not set by
default.Net::SSLeay
1.92 and
later automatically enables TLS handshake message logging when log level
is set to DEBUG or higher with Trace or PacketTrace
parameter. When TLS message logging is enabled, TLS state tracing can also
be enabled by setting EAPTLS_TraceState
. TLS state
and messaging logging contain similar information and in most cases it's
not useful have them both enabled.EAPTLS_TraceState
:# Turn on TLS state tracing for this AuthBy EAPTLS_TraceState
NAS-IP-Address NAS-Identifier NAS-Port
Calling-Station-Id
. The default list is empty for
EAP-TTLS.EAPTLS_CopyToInnerRequest
:EAPTLS_CopyToInnerRequest Calling-Station-Id, Called-Station-Id
certs/
in the default
OpenSSL directory. Use SSL_CERT_DIR environment
variable to override the default location. The default CA certificate file
is cert.pm
in the default OpenSSL directory. Use
SSL_CERT_FILE environment variable to override the
default file name.EAPTLS_RequireClientCert
. Do not set
this if EAP-TLS support is needed.EAPTLS_OCSPAsyncCheck
. This defines if Online
Certificate Status must be checked for revoked certificates. It is used
only with TLS-based EAP types, such as TLS, TTLS, and PEAP, that are
configured to check client certificates. Using this parameter requires
LWP::UserAgent
and HTTP::Request
Perl modules.EAPTLS_OCSPStapling
,
Net::SSLeay 1.82 or later is required.HTTP::Async
and HTTP::Request
Perl
modules.EAPTLS_OCSPAsyncCheck
is alternative to
EAPTLS_OCSPCheck
, the same requirements apply also
with EAPTLS_OCSPAsyncCheck
. For more information, see
Section 3.10.45. EAPTLS_OCSPCheck.LWP::UserAgent
and HTTP::Request
Perl modules.EAPTLS_OCSPStapling
does
not require that EAPTSL_OCSPCheck
or
EAPTSL_OCSPAsyncCheck
is set, but the same
requirements apply when you use only
TLS_OCSPStapling
. See the requirements list in Section 3.10.45. EAPTLS_OCSPCheck.EAPTLS_OCSPStrict
is set,
the certificate check must be successful in all phases. Here are some
examples when the certificate check fails if
EAPTLS_OCSPStrict
is set:EAPTLS_OCSPURI
is not set and the certificate
does not have OCSP URI.1200
, that is 20 minutes.1000
.User-Name
User-Password
CHAP-Password
CHAP-Challenge
EAP-Message
MS-CHAP-Response
MS-CHAP-Challenge
MS-CHAP2-Response
EAP_TTLS_AllowInRequest
:# Also allow our vendor specific attribute in EAP-TTLS requests EAP_TTLS_AllowInRequest OSC-AVPAIR, User-Name, User-Password, \ CHAP-Password, CHAP-Challenge, EAP-Message, \ MS-CHAP-Response, MS-CHAP-Challenge, MS-CHAP2-Response
EAP-Message
MS-CHAP2-Success
EAP_TTLS_AllowInReply
:# Also allow our vendor specific attribute in EAP-TTLS replies EAP_TTLS_AllowInReply OSC-AVPAIR, EAP-Message, MS-CHAP2-Success
253
.EAP_PWD_PrepMethod
. The default value is
None
. The currently available methods are shown in the
table below.Preparation method | Explanation |
None |
Password is used as is. No additional preparation is done. The password must be stored in plain text, including rcrypt, format. |
NtHash |
Password is processed to produce the output
PasswordHashHash, as defined in RFC 2759. The password must be
stored in plain text, including rcrypt, or NT hashed format.
This requires Digest::MD4 Perl
module. |
SASLprep |
Password is processed according to RFC 5931 SASLprep
specification. The password must be stored in plain text,
including rcrypt, format. This requires
Authen::SASL::SASLprep version 1.100 or
later. |
None
. For example, wpa_supplicant 2.6+fixes
is needed for the NtHash
method to
work.EAP_PWD_PrepMethod
:# Our passwords are stored in {nthash} prefixed format EAP_PWD_PrepMethod NtHash
UsernameCharset
is available as
a global and Handler level parameter. The character set checks are done
for both User-Name attribute and EAP identity.UsernameCharset
checks. When an
EAP-Response/Identity message is handled by an AuthBy, the EAP identity
must pass both global and per Handler UsernameCharset
checks. The Handler is the last Handler that processed the request before
it was passed to the AuthBy.UsernameCharset a-zA-Z0-9._@-
AuthByPolicy ContinueWhileAccept # Check the MAC address is valid.. <AuthBy FILE> NoEAP AuthenticateAttribute Calling-Station-Id Filename ... ... </AuthBy> # then check the username and password, perhaps by EAP <AuthBy LDAP2> EAPType .... .... </AuthBy>
PreHandlerHook
is called for
each request after per-Client user name rewriting and duplicate
rejection, and before the request is passed to a Realm or Handler
clause.PreHandlerHook
specifies a Perl hook to be called before the inner request is
re-dispatched to a matching Realm or Handler.EAP_LEAP_MSCHAP_Convert
flag is
set, PreHandlerHook
specifies a Perl hook to
be called before the converted request is re-dispatched to a
matching Realm or Handler.EAP_PEAP_MSCHAP_Convert
flag is set, PreHandlerHook
specifies a Perl
hook to be called before the converted request is re-dispatched to
a matching Realm or Handler.EAP_GTC_PAP_Convert
flag is
set, PreHandlerHook
specifies a Perl hook to
be called before the converted request is re-dispatched to a
matching Realm or Handler.PreHandlerHook
is
called for each request created by the clause before the request is
passed to a Realm or Handler clause.PreHandlerHook
is
called for each request after global and per-ServerRADSEC user name
rewriting and before the request is passed to a Realm or Handler
clause.PreHandlerHook
is
called for each request received by ServerDIAMETER before the request
is passed to a Realm or Handler clause.PreHandlerHook
is
called for each request before it is passed to a Realm or Handler
clause. If a Client is found for the request, Client's
PrehandlerHook
is run before ServerTACASPLUS's
PreHandlerHook
. Global and per-Client user name
rewriting and other processing is done before the hooks are
run.PreHandlerHook
can be an arbitrarily complicated Perl function, that might run external
processes, consult databases, change the contents of the current request
or many other things. Here is an example of using
PreHandlerHook
:# Fake a new attribute into the request PreHandlerHook sub { ${$_[0]}->add_attr('test-attr', \ 'test-value');}
# Enable when debugging, remove when in production EAPTLS_KeylogFilename %L/eap-keylog