Forum Discussion

Saad_Malik_2068's avatar
Saad_Malik_2068
Icon for Nimbostratus rankNimbostratus
Jun 23, 2018

TLS handshake in passthrough scenario

Hi All,

 

This might be a basic question but i would like to know how the SSL/TLS handshake takes place in a SSL passthrough scenario. If we are not doing the offloading, there is no certificate on the F5 installed than how will the handshake happen? Will the tls hello packets be forwarded directly to the backend server?

 

I couldn't find any documentation on this scenario. Any help would be great. I assume this would be the case for any loadbalancer and not just F5.

 

Thanks!

 

10 Replies

  • You are correct. In a scenario where the load balancer does not perform ssl encryption/decryption (offloading), ssl negotiation is performed directly between the client and backend pool members (servers).

     

    A typical F5 configuration would be comprised of a virtual server that listens on port 443, server type of standard or layer 4 and backend pool members listening on port 443.

     

    • Saad_Malik_2068's avatar
      Saad_Malik_2068
      Icon for Nimbostratus rankNimbostratus

      Hi Ace,

       

      thanks for the confirmation, i thought so too but my confusion starts when i think of the load balancing. So the client hello comes through, the load balancer sends it to one of the available nodes....how does the stickiness persist in this case when the other handshake packets comes?

       

      So in this scenario, the VIP has a natted IP on the firewall which is exposed on the internet, the external clients connects to that IP. So my understanding was the load balancer will make the connection with the external client and make another connection with a particular back-end node and once the connection is established, it will just pass the ssl/tls traffic through. Offloading would be if we decrypt the tls/ssl packets which we are not in this case.

       

    • AceDawg_204810's avatar
      AceDawg_204810
      Icon for Cirrus rankCirrus

      There are several flavors of persistence. Cookie persistence is typically the more popular choice for web traffic but can only be employed if the F5 has access to the HTTP session -- not possible if SSL negotiation is performed directly between client and pool members. Source IP address persistence is a possible candidate but this can bring about complications if clients are behind a firewall. That said, SSL persistence is probably the better choice in your setup -- the SSL session ID is used to persist.

       

      The scenario you described (FW, NAT, TCP proxy) is correct.

       

    • Saad_Malik_2068's avatar
      Saad_Malik_2068
      Icon for Nimbostratus rankNimbostratus

      Great! So in my case, there will be 2 connection....client to loadbalancer and than loadbalancer to back-end server. Currently, the persistence method deployed is the source persistence with a refresh of 48 hours. In that case any connections coming in from a particular client, within the 48 hours time frame will be sent to the same back-end server where the first packet was sent.

       

      That explains alot....would be nice if F5 has the tls passthrough document someplace.

       

  • You are correct. In a scenario where the load balancer does not perform ssl encryption/decryption (offloading), ssl negotiation is performed directly between the client and backend pool members (servers).

     

    A typical F5 configuration would be comprised of a virtual server that listens on port 443, server type of standard or layer 4 and backend pool members listening on port 443.

     

    • Saad_Malik_2068's avatar
      Saad_Malik_2068
      Icon for Nimbostratus rankNimbostratus

      Hi Ace,

       

      thanks for the confirmation, i thought so too but my confusion starts when i think of the load balancing. So the client hello comes through, the load balancer sends it to one of the available nodes....how does the stickiness persist in this case when the other handshake packets comes?

       

      So in this scenario, the VIP has a natted IP on the firewall which is exposed on the internet, the external clients connects to that IP. So my understanding was the load balancer will make the connection with the external client and make another connection with a particular back-end node and once the connection is established, it will just pass the ssl/tls traffic through. Offloading would be if we decrypt the tls/ssl packets which we are not in this case.

       

    • AceDawg1's avatar
      AceDawg1
      Icon for Nimbostratus rankNimbostratus

      There are several flavors of persistence. Cookie persistence is typically the more popular choice for web traffic but can only be employed if the F5 has access to the HTTP session -- not possible if SSL negotiation is performed directly between client and pool members. Source IP address persistence is a possible candidate but this can bring about complications if clients are behind a firewall. That said, SSL persistence is probably the better choice in your setup -- the SSL session ID is used to persist.

       

      The scenario you described (FW, NAT, TCP proxy) is correct.

       

    • Saad_Malik_2068's avatar
      Saad_Malik_2068
      Icon for Nimbostratus rankNimbostratus

      Great! So in my case, there will be 2 connection....client to loadbalancer and than loadbalancer to back-end server. Currently, the persistence method deployed is the source persistence with a refresh of 48 hours. In that case any connections coming in from a particular client, within the 48 hours time frame will be sent to the same back-end server where the first packet was sent.

       

      That explains alot....would be nice if F5 has the tls passthrough document someplace.