Wie erzwinge ich TLS 1.3 in FreeRADIUS?

Ich versuche, etwas mit TLS 1.3 zu experimentieren.

Ich habe ein CA-Setup, Server- und Client-Zertifikate generiert und verteilt, und ich kann mit diesen Zertifikaten erfolgreich eine Verbindung mit openssl s_server & s_client herstellen:

TLS-1.2:

...
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: FFE0AFA10151E6E6F836F84E35D3D84F61F1811DD29B3E5F72F322A5E2529600
    Session-ID-ctx: 
...
    Start Time: 1669758448
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: yes
---

TLS-1.3:

---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: F23B37793041E458A77B180FED47B43DF02378C4A25F505A6C4942C5A195EF4E
    Session-ID-ctx: 
...
    Start Time: 1669758331
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
    Max Early Data: 0
---

Okay, cool, also funktioniert OpenSSL, weiter zu RADIUS/EAP-TLS.

Dies sind dieselben Zertifikate, die ich für den RADIUS-Server und für die EAP-TLS-Authentifizierung verwende. In der eap.conf Datei habe ich:

...
        tls_min_version = "1.2"
        tls_max_version = "1.2"
...

und alles funktioniert gut. Wenn ich max_version nur auf 1.3 setze, ist es immer noch erfolgreich, aber wenn ich sowohl minimale als auch maximale Version auf 1.3 setze, schlägt der Handshake fehl und der Client wird abgelehnt. Ich habe mir die Debug-Meldungen angesehen und in diesem Auszug etwas Besonderes bemerkt:

(1) Found Auth-Type = eap
(1) # Executing group from file /etc/freeradius/3.0/sites-enabled/default
(1)   authenticate {
(1) eap: Expiring EAP session with state 0x1d55cef11de3c377
(1) eap: Finished EAP session with state 0x1d55cef11de3c377
(1) eap: Previous EAP request found for state 0x1d55cef11de3c377, released from the list
(1) eap: Peer sent packet with method EAP TLS (13)
(1) eap: Calling submodule eap_tls to process data
(1) eap_tls: (TLS) EAP Got final fragment (184 bytes)
(1) eap_tls: WARNING: (TLS) EAP Total received record fragments (184 bytes), does not equal expected expected data length (0 bytes)
(1) eap_tls: (TLS) EAP Done initial handshake
(1) eap_tls: (TLS) Handshake state - before SSL initialization
(1) eap_tls: (TLS) Handshake state - Server before SSL initialization
(1) eap_tls: (TLS) Handshake state - Server before SSL initialization
(1) eap_tls: (TLS) recv TLS 1.3 Handshake, ClientHello
(1) eap_tls: (TLS) send TLS 1.2 Alert, fatal protocol_version
(1) eap_tls: ERROR: (TLS) Alert write:fatal:protocol version
(1) eap_tls: ERROR: (TLS) Server : Error in error
(1) eap_tls: ERROR: (TLS) Failed reading from OpenSSL: error:0A000102:SSL routines::unsupported protocol
(1) eap_tls: ERROR: (TLS) System call (I/O) error (-1)
(1) eap_tls: ERROR: (TLS) EAP Receive handshake failed during operation
(1) eap_tls: ERROR: [eaptls process] = fail
(1) eap: ERROR: Failed continuing EAP TLS (13) session.  EAP sub-module failed
(1) eap: Sending EAP Failure (code 4) ID 182 length 4
(1) eap: Failed in EAP select
(1)     [eap] = invalid
(1)   } # authenticate = invalid
(1) Failed to authenticate the user
(1) Using Post-Auth-Type Reject

Speziell aus diesen 2 Zeilen:

(1) eap_tls: (TLS) recv TLS 1.3 Handshake, ClientHallo
(1) eap_tls: (TLS) sendet TLS 1.2 Alert, schwerwiegende Protokollversion

Es scheint, dass der Client einen TLS 1.3-Handshake im Client Hello sendet, aber der Server fällt auf TLS 1.2 zurück und schlägt fehl.

Was fehlt mir, um TLS 1.3 serverseitig zu erzwingen? Ich hatte den Eindruck, dass das Setzen von tls_min_version und tls_max_version in der eap.conf-Datei ausreicht, um die serverseitig verwendete TLS-Version zu ändern.

Die Freeradius-Dokumentation enthält nur sehr begrenzte Informationen zu EAP-TLS 1.3 und ist nicht so klar über irgendetwas anderes als die Tatsache, dass es wahrscheinlich nicht funktionieren wird. Auch wenn es am Ende nicht funktioniert, bin ich gespannt, was passiert, aber ich habe einige Probleme mit diesem Teil.


324
1

Antwort:

Gelöst

Endlich herausgefunden.

Trotz dieser Debug-Ausgaben und Fehlermeldungen, die stark auf etwas anderes hindeuten, wie die FreeRADIUS-Jungs seit einiger Zeit andeuten, ist dies ein clientseitiges Problem.