Thanks for the quick response. You were right, I switched to OpenSuSE 15.6 with is currently at openssl version:
OpenSSL 3.1.4 24 Oct 2023 (Library: OpenSSL 3.1.4 24 Oct 2023)

All the badssl test failures are now gone. What remains is:

> make test
TCL_LIBRARY=`echo `echo \
    -load "package ifneeded tls 2.0b2 \
        [list load libtcl9tls2.0b2.so [string totitle tls]]; \
        source
Tests running in interp:
Tests located in:
Tests running in:
Temporary files stored in
Test files run in separate interpreters
Running tests that match:  *
Skipping test files that match:  l.*.test
Only running test files that match:  *.test
Tests began at Wed Oct 15 16:46:36 CEST 2025
badssl.test
ciphers.test
tlsIO.test


==== tlsIO-8.1 testing -async flag on sockets FAILED
==== Contents of test case:

    # NOTE: This test may fail on some Solaris 2.4 systems.
    # See notes in Tcl's socket.test.
    set s [tls::socket -server accept -require 0  -certfile $serverCert -cafile $caCert -keyfile $serverKey 8830]
    proc accept {s a p} {
        global x
        # when doing an in-process client/server test, both sides need
        # to be non-blocking for the TLS handshake.  Also make sure
        # to return the channel to line buffering mode.
        fconfigure $s -blocking 0 -buffering line
        puts $s bye
        # Only OpenSSL 0.9.5a on Windows seems to need the after (delayed)
        # close, but it works just the same for all others. -hobbs
        after 500 close $s
        set x done
    }
    set s1 [tls::socket -require 0  -certfile $clientCert -cafile $caCert -keyfile $clientKey  -async localhost 8830]
    # when doing an in-process client/server test, both sides need
    # to be non-blocking for the TLS handshake  Also make sure to
    # return the channel to line buffering mode (TLS sets it to 'none').
    fconfigure $s1 -blocking 0 -buffering line
    vwait x
    # TLS handshaking needs one byte from the client...
    puts $s1 a
    # need update to complete TLS handshake in-process
    update
    fconfigure $s1 -blocking 1
    set z [gets $s1]
    close $s
    close $s1
    set z

---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- errorInfo: error reading "sock2b737790": software caused connection abort
    while executing
"gets $s1"
    ("uplevel" body line 28)
    invoked from within
"uplevel 1 $script"
---- errorCode: POSIX ECONNABORTED {software caused connection abort}
==== tlsIO-8.1 FAILED


==== tlsIO-9.1 testing spurious (0 byte read) events FAILED
==== Contents of test case:

    set len 0
    set spurious 0
    set done 0
    proc readlittle {s} {
        global spurious done len
        set l [read $s 1]
        if {[string length $l] == 0} {
            if {![eof $s]} {
                incr spurious
            } else {
                close $s
                set done 1
            }
        } else {
            incr len [string length $l]
        }
    }
    proc accept {s a p} {
        fconfigure $s -blocking 0
        fileevent $s readable [list do_handshake $s readable readlittle  -buffering none]
    }
    set s [tls::socket -server accept -require 0  -certfile $serverCert -cafile $caCert -keyfile $serverKey 8831]
    set c [tls::socket -require 0  -certfile $clientCert -cafile $caCert -keyfile $clientKey  localhost 8831]
    # This differs from socket-9.1 in that both sides need to be
    # non-blocking because of TLS' required handshake
    fconfigure $c -blocking 0
    puts -nonewline $c
    flush $c
    set timer [after 10000 [list set done timed_out]]
    after 1000 [list close $c]
    vwait done
    after cancel $timer
    catch {close $s}
    list $spurious $len

---- Result was:
1 50
---- Result should have been (exact matching):
0 50
==== tlsIO-9.1 FAILED

Test file error: software caused connection abort
    while executing
"close sock2b737010"
    ("after" script)

Tests ended at Wed Oct 15 16:47:28 CEST 2025
all.tcl:        Total   155     Passed  111     Skipped 42      Failed  2
Sourced 3 Test Files.
Files with failing tests: tlsIO.test
Number of tests skipped for each constraint:
        12      doTestsWithRemoteServer
        1       mac
        20      old_api
        3       ssl2
        3       ssl3
        1       testthread
        2       unexplainedFailure

Test files exiting with errors:

  tlsIO.test

-- end of message --