Forum Discussion

neeeewbie's avatar
Feb 02, 2026

SSL cipher

Hi guys 

 

TLS is weird.

Why is this behavior happening?

 

The server that receives the client hello sends an alert.

Transport Layer Security
    TLSv1.2 Record Layer: Handshake Protocol: Client Hello
        Content Type: Handshake (22)
        Version: TLS 1.0 (0x0301)
        Length: 688
        Handshake Protocol: Client Hello
            Handshake Type: Client Hello (1)
            Length: 684
            Version: TLS 1.2 (0x0303)

 

The server only allows TLS 1.0.

Our SSL profile is also set to only allow TLS 1.0.

6 Replies

  • Hi,

    could you please share more information other than the snippet?
    Serverside SSL Profile, Web Server SSL config, full SSL handshake.

    Cheers
    Daniel

  • It's as follows:

    ltm profile server-ssl /Common/aaa_SSL_Server_Profile {
        app-service none
        defaults-from /Common/serverssl
        options { dont-insert-empty-fragments no-tlsv1.1 no-tlsv1.2 no-sslv3 }
    }

     

    I don't know anything about the server-side configuration other than that it only supports TLS 1.0.

    The above is a TCP packet dump. Do you know what causes these packets to appear?

    • Daniel_Wolf's avatar
      Daniel_Wolf
      Icon for MVP rankMVP

      btw. this snippet won't load

      root@(awaf)(cfg-sync Standalone)(Active)(/Common)(tmos)# load sys config from-terminal merge verify 
      Enter configuration. Press CTRL-D to submit or CTRL-C to cancel.
      ltm profile server-ssl /Common/aaa_SSL_Server_Profile {
          app-service none
          defaults-from /Common/serverssl
          options { dont-insert-empty-fragments no-tlsv1.1 no-tlsv1.2 no-sslv3 }
      }
      Validating configuration...
      01b40001:3: A cipher group must be configured when TLS 1.3 is enabled (validation failed for profile /Common/aaa_SSL_Server_Profile).
      Unexpected Error: Validating configuration process failed.

       

  • I set this up in my lab and it works. BIG-IP Version 21.0.

    I created two virtuals.
    The first virtual has a default SSL profile on the client side and a serverside profile that only has TLS 1 enabled. This has the IP 192.168.57.82
    A second has a clientssl profile that will only accept TLS 1 and has an iRule attached that will respond 200 OK to any HTTP request. This has the IP 2.2.2.2.

    This is the traffic flow:

    First test.
    cURL from F5 to Virtual Server 2
    Result: Only TLS 1 works, success.

    [root@awaf:Active:Standalone] config # openssl s_client -connect 2.2.2.2:443 -tls1
    CONNECTED(00000003)
    depth=0 C = US, ST = WA, L = Seattle, O = MyCompany, OU = IT, CN = localhost.localdomain, emailAddress = root@localhost.localdomain
    verify error:num=18:self signed certificate
    verify return:1
    depth=0 C = US, ST = WA, L = Seattle, O = MyCompany, OU = IT, CN = localhost.localdomain, emailAddress = root@localhost.localdomain
    verify return:1
    ---
    Certificate chain
     0 s:/C=US/ST=WA/L=Seattle/O=MyCompany/OU=IT/CN=localhost.localdomain/emailAddress=root@localhost.localdomain
       i:/C=US/ST=WA/L=Seattle/O=MyCompany/OU=IT/CN=localhost.localdomain/emailAddress=root@localhost.localdomain
    ---
    Server certificate
    REMOVED
    ---
    No client certificate CA names sent
    Server Temp Key: ECDH, P-256, 256 bits
    ---
    SSL handshake has read 1461 bytes and written 299 bytes
    ---
    New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-SHA
    Server public key is 2048 bit
    Secure Renegotiation IS supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
        Protocol  : TLSv1
        Cipher    : ECDHE-RSA-AES128-SHA
    

     

    Second test
    cURL from F5 to Virtual Server 1, get proper HTTP response and verify TLS 1 from SNAT address to 2.2.2.2
    Result: 

    [root@awaf:Active:Standalone] config # curl https://192.168.57.82 -k
    
          <html>
             <head>
                <title>BIG-IP</title>
             </head>
             <body>
                200 OK
             </body>
          </html>
    

    F5 to backend - Client Hello only TLS 1

     

     

     

     

     

     

     

     

    Backend response - Server Hello only TLS 1

     

     

     

     

     

     

     

     

    This is my serverssl profile

     

     

     

     

     

     

     

     

     

     

     

     

    Here is my complete config as AS3 for you to replay and to test.
    I'd start with the first test in your environment to make sure the backend really speaks TLS 1.

    {
        "$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/main/schema/latest/as3-schema.json",
        "class": "AS3",
        "action": "deploy",
        "persist": true,
        "declaration": {
            "class": "ADC",
            "schemaVersion": "3.0.0",
            "TLS1_TEST": {
                "class":"Tenant",
                "responder_service": {
                    "class": "Application",
                    "service_http_200": {
                        "class": "Service_HTTPS",
                        "virtualPort": 443,
                        "redirect80": false,
                        "serverTLS": "frontendtls",
                        "virtualAddresses": [
                            "2.2.2.2"
                        ],
                        "iRules": [{
                            "use": "rule_http_200"
                        }]
                    },
                    "frontendtls": {
                        "class": "TLS_Server",
                        "certificates": [
                            {
                                "certificate": "default_cert"
                            }
                        ],
                        "ssl3Enabled": false,
                        "tls1_0Enabled": true,
                        "tls1_1Enabled": false,
                        "tls1_2Enabled": false,
                        "tls1_3Enabled": false,
                        "dtlsEnabled": false,
                        "dtls1_2Enabled": false
                    },
                    "default_cert": {
                        "class": "Certificate",
                        "certificate": {"bigip":"/Common/default.crt"},
                        "privateKey": {"bigip":"/Common/default.key"}
                    },
                    "rule_http_200": {
                        "class": "iRule",
                        "iRule": {
                            "base64": "d2hlbiBIVFRQX1JFUVVFU1QgewogICBIVFRQOjpyZXNwb25kIDIwMCBjb250ZW50IHsKICAgICAgPGh0bWw+CiAgICAgICAgIDxoZWFkPgogICAgICAgICAgICA8dGl0bGU+QklHLUlQPC90aXRsZT4KICAgICAgICAgPC9oZWFkPgogICAgICAgICA8Ym9keT4KICAgICAgICAgICAgMjAwIE9LCiAgICAgICAgIDwvYm9keT4KICAgICAgPC9odG1sPgogICB9Cn0="
                        }
                    }
                },
                "forwarding_service": {
                    "class": "Application",
                    "service_http": {
                        "class": "Service_HTTPS",
                        "virtualPort": 443,
                        "redirect80": false,
                        "serverTLS": { "bigip": "/Common/clientssl" },
                        "clientTLS": "backendtls",
                        "virtualAddresses": [
                            "192.168.57.82"
                        ],
                        "iRules": [{
                            "use": "rule_vs_forward"
                        }]
                    },
                    "backendtls": {
                        "class": "TLS_Client",
                        "ssl3Enabled": false,
                        "tls1_0Enabled": true,
                        "tls1_1Enabled": false,
                        "tls1_2Enabled": false,
                        "tls1_3Enabled": false,
                        "dtlsEnabled": false,
                        "dtls1_2Enabled": false
                    },
                    "rule_vs_forward" : {
                        "class": "iRule",
                        "iRule": {
                            "base64": "d2hlbiBIVFRQX1JFUVVFU1QgewogIHZpcnR1YWwgL1RMUzFfVEVTVC9yZXNwb25kZXJfc2VydmljZS9zZXJ2aWNlX2h0dHBfMjAwCn0="
                        }
                    }
                }
            }
        }
    }

     

    Good luck
    Daniel

  • Thank you.

    We confirmed that loading the device configuration works, but verifying does not.

    We are investigating this issue further.

    Thank you for your help.

    • Kerry's avatar
      Kerry
      Icon for Cirrus rankCirrus

      You have a health monitor running?   unless you define an SSL profile on it, it will users the default.  Also, if more than on server SSL profiles on the VS (i.e. you using SNI)  the F5 can select the wrong profiles an a irules need to fix that.