Skip to main content
Redhat Developers  Logo
  • Products

    Featured

    • Red Hat Enterprise Linux
      Red Hat Enterprise Linux Icon
    • Red Hat OpenShift AI
      Red Hat OpenShift AI
    • Red Hat Enterprise Linux AI
      Linux icon inside of a brain
    • Image mode for Red Hat Enterprise Linux
      RHEL image mode
    • Red Hat OpenShift
      Openshift icon
    • Red Hat Ansible Automation Platform
      Ansible icon
    • Red Hat Developer Hub
      Developer Hub
    • View All Red Hat Products
    • Linux

      • Red Hat Enterprise Linux
      • Image mode for Red Hat Enterprise Linux
      • Red Hat Universal Base Images (UBI)
    • Java runtimes & frameworks

      • JBoss Enterprise Application Platform
      • Red Hat build of OpenJDK
    • Kubernetes

      • Red Hat OpenShift
      • Microsoft Azure Red Hat OpenShift
      • Red Hat OpenShift Virtualization
      • Red Hat OpenShift Lightspeed
    • Integration & App Connectivity

      • Red Hat Build of Apache Camel
      • Red Hat Service Interconnect
      • Red Hat Connectivity Link
    • AI/ML

      • Red Hat OpenShift AI
      • Red Hat Enterprise Linux AI
    • Automation

      • Red Hat Ansible Automation Platform
      • Red Hat Ansible Lightspeed
    • Developer tools

      • Red Hat Trusted Software Supply Chain
      • Podman Desktop
      • Red Hat OpenShift Dev Spaces
    • Developer Sandbox

      Developer Sandbox
      Try Red Hat products and technologies without setup or configuration fees for 30 days with this shared Openshift and Kubernetes cluster.
    • Try at no cost
  • Technologies

    Featured

    • AI/ML
      AI/ML Icon
    • Linux
      Linux Icon
    • Kubernetes
      Cloud icon
    • Automation
      Automation Icon showing arrows moving in a circle around a gear
    • View All Technologies
    • Programming Languages & Frameworks

      • Java
      • Python
      • JavaScript
    • System Design & Architecture

      • Red Hat architecture and design patterns
      • Microservices
      • Event-Driven Architecture
      • Databases
    • Developer Productivity

      • Developer productivity
      • Developer Tools
      • GitOps
    • Secure Development & Architectures

      • Security
      • Secure coding
    • Platform Engineering

      • DevOps
      • DevSecOps
      • Ansible automation for applications and services
    • Automated Data Processing

      • AI/ML
      • Data Science
      • Apache Kafka on Kubernetes
      • View All Technologies
    • Start exploring in the Developer Sandbox for free

      sandbox graphic
      Try Red Hat's products and technologies without setup or configuration.
    • Try at no cost
  • Learn

    Featured

    • Kubernetes & Cloud Native
      Openshift icon
    • Linux
      Rhel icon
    • Automation
      Ansible cloud icon
    • Java
      Java icon
    • AI/ML
      AI/ML Icon
    • View All Learning Resources

    E-Books

    • GitOps Cookbook
    • Podman in Action
    • Kubernetes Operators
    • The Path to GitOps
    • View All E-books

    Cheat Sheets

    • Linux Commands
    • Bash Commands
    • Git
    • systemd Commands
    • View All Cheat Sheets

    Documentation

    • API Catalog
    • Product Documentation
    • Legacy Documentation
    • Red Hat Learning

      Learning image
      Boost your technical skills to expert-level with the help of interactive lessons offered by various Red Hat Learning programs.
    • Explore Red Hat Learning
  • Developer Sandbox

    Developer Sandbox

    • Access Red Hat’s products and technologies without setup or configuration, and start developing quicker than ever before with our new, no-cost sandbox environments.
    • Explore Developer Sandbox

    Featured Developer Sandbox activities

    • Get started with your Developer Sandbox
    • OpenShift virtualization and application modernization using the Developer Sandbox
    • Explore all Developer Sandbox activities

    Ready to start developing apps?

    • Try at no cost
  • Blog
  • Events
  • Videos

How to use Skupper to expose services over TLS

December 12, 2023
Noe Luaces
Related topics:
Security
Related products:
Red Hat Service Interconnect

Share:

    Securing inter-cloud connections through end-to-end with TLS is necessary, ensuring not only the confidentiality and integrity of data exchanged between cloud environments but also safeguarding against unauthorized access. While inter-router communication in Skupper is always fortified with mutual TLS, it's essential to note that, by default, communication between services and routers does not have this encryption layer. Deploying TLS in client-router and router-service is possible to fortify the entire communication ecosystem.

    Skupper ensures mutual TLS (mTLS) for inter-router communications by default, and users have the option to enhance security by enabling TLS specifically between services and the Skupper routers, with the flexibility to either auto-generate certificates through Skupper or integrate custom certificates as needed.

    Enabling TLS with generated certificates

    This option addresses scenarios in which services belonging to the same Skupper network communicate over TLS. To expose a service over TLS with generated certs, we will add the flag generated-tls-secrets in the skupper expose command:

    skupper expose deployment payments --address payments --port 5001,5002  --protocol http2 --generate-tls-secrets

    This will generate a server certificate that will be stored as a secret on each site with the name of the service plus the prefix "skupper-tls" and configured in the routers. For instance, in this example the server certificate will be stored in the secret skupper-tls-payments, as shown in Figure 1.

    A diagram showing TLS with generated certs in Skupper.
    Figure 1: TLS with generated certs in Skupper.

    The generated certificates are not distributed within the Skupper network. They are unique to each site because they are signed with the particular site's CA, which will be stored in the secret skupper-service-client.

    Following the example, the billing service must use the CA stored in the skupper-service-client secret of the same site in which it resides. The payments microservice needs to utilize the certificate stored in skupper-tls-payments, which belongs to its respective site.

    With this configuration, the traffic will be encrypted between the service and the router using generated certificates, then encrypted between the routers with their respective certificates, and finally encrypted between the router and the target service with a different set of generated certificates.

    Enabling TLS with custom certificates

    This option is valid for establishing TLS between services within the same Skupper network or external clients sending requests to a service deployed in a Skupper network. This flexibility exists because the user has control over the certificates used.

    Before exposing the service in Skupper, the user must store the server certificate and the CA in two secrets. For this example, we will call it server-cert-secret and  ca-cert-secret. This has to be repeated in all the sites of the Skupper network, using the same two names for those secrets.

    To expose a service over TLS with custom certs, we will add the flags tls-trust and tls-certs in the following skupper expose command (Figure 2).

    skupper expose deployment payments --address payments --port 5001,5002  --protocol http2 --tls-trust ca-cert-secret –tls-cert server-cert-secret
    A diagram showing TLS with custom certs.
    Figure 2: TLS with custom certs.

    The traffic will be encrypted between the service and the router using the custom certificates, then encrypted between the routers with their respective certificates, and finally, encrypted between the router and the target service the same custom certs. For that reason, an external client only needs to use the same CA stored in all the sites, as specified in the --tls-trust flag, to send a request to a service included in a Skupper network.

    Related Posts

    • Use Skupper to connect multiple Kubernetes clusters

    • Kubernetes and the hybrid cloud with Skupper

    • How OpenShift cert-manager simplifies cluster certificates

    • Secure communication with Red Hat Decision Manager

    • Comparing OpenShift Service Mesh and Service Interconnect

    • How to connect Kubernetes clusters with Service Interconnect

    Recent Posts

    • More Essential AI tutorials for Node.js Developers

    • How to run a fraud detection AI model on RHEL CVMs

    • How we use software provenance at Red Hat

    • Alternatives to creating bootc images from scratch

    • How to update OpenStack Services on OpenShift

    What’s up next?

    In this learning path, you will learn how to build a service network to connect disparate services across different environments using Red Hat Service Interconnect, which is based on the open source Skupper project.

    Start learning
    Red Hat Developers logo LinkedIn YouTube Twitter Facebook

    Products

    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform

    Build

    • Developer Sandbox
    • Developer Tools
    • Interactive Tutorials
    • API Catalog

    Quicklinks

    • Learning Resources
    • E-books
    • Cheat Sheets
    • Blog
    • Events
    • Newsletter

    Communicate

    • About us
    • Contact sales
    • Find a partner
    • Report a website issue
    • Site Status Dashboard
    • Report a security problem

    RED HAT DEVELOPER

    Build here. Go anywhere.

    We serve the builders. The problem solvers who create careers with code.

    Join us if you’re a developer, software engineer, web designer, front-end designer, UX designer, computer scientist, architect, tester, product manager, project manager or team lead.

    Sign me up

    Red Hat legal and privacy links

    • About Red Hat
    • Jobs
    • Events
    • Locations
    • Contact Red Hat
    • Red Hat Blog
    • Inclusion at Red Hat
    • Cool Stuff Store
    • Red Hat Summit

    Red Hat legal and privacy links

    • Privacy statement
    • Terms of use
    • All policies and guidelines
    • Digital accessibility

    Report a website issue