Skip to main content
Redhat Developers  Logo
  • AI

    Get started with AI

    • Red Hat AI
      Accelerate the development and deployment of enterprise AI solutions.
    • AI learning hub
      Explore learning materials and tools, organized by task.
    • AI interactive demos
      Click through scenarios with Red Hat AI, including training LLMs and more.
    • AI/ML learning paths
      Expand your OpenShift AI knowledge using these learning resources.
    • AI quickstarts
      Focused AI use cases designed for fast deployment on Red Hat AI platforms.
    • No-cost AI training
      Foundational Red Hat AI training.

    Featured resources

    • OpenShift AI learning
    • Open source AI for developers
    • AI product application development
    • Open source-powered AI/ML for hybrid cloud
    • AI and Node.js cheat sheet

    Red Hat AI Factory with NVIDIA

    • Red Hat AI Factory with NVIDIA is a co-engineered, enterprise-grade AI solution for building, deploying, and managing AI at scale across hybrid cloud environments.
    • Explore the solution
  • Learn

    Self-guided

    • Documentation
      Find answers, get step-by-step guidance, and learn how to use Red Hat products.
    • Learning paths
      Explore curated walkthroughs for common development tasks.
    • Guided learning
      Receive custom learning paths powered by our AI assistant.
    • See all learning

    Hands-on

    • Developer Sandbox
      Spin up Red Hat's products and technologies without setup or configuration.
    • Interactive labs
      Learn by doing in these hands-on, browser-based experiences.
    • Interactive demos
      Click through product features in these guided tours.

    Browse by topic

    • AI/ML
    • Automation
    • Java
    • Kubernetes
    • Linux
    • See all topics

    Training & certifications

    • Courses and exams
    • Certifications
    • Skills assessments
    • Red Hat Academy
    • Learning subscription
    • Explore training
  • Build

    Get started

    • Red Hat build of Podman Desktop
      A downloadable, local development hub to experiment with our products and builds.
    • Developer Sandbox
      Spin up Red Hat's products and technologies without setup or configuration.

    Download products

    • Access product downloads to start building and testing right away.
    • Red Hat Enterprise Linux
    • Red Hat AI
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    Featured

    • Red Hat build of OpenJDK
    • Red Hat JBoss Enterprise Application Platform
    • Red Hat OpenShift Dev Spaces
    • Red Hat Developer Toolset

    References

    • E-books
    • Documentation
    • Cheat sheets
    • Architecture center
  • Community

    Get involved

    • Events
    • Live AI events
    • Red Hat Summit
    • Red Hat Accelerators
    • Community discussions

    Follow along

    • Articles & blogs
    • Developer newsletter
    • Videos
    • Github

    Get help

    • Customer service
    • Customer support
    • Regional contacts
    • Find a partner

    Join the Red Hat Developer program

    • Download Red Hat products and project builds, access support documentation, learning content, and more.
    • Explore the benefits

Securing Fuse 6.3 Fabric Cluster Management Console with SSL/TLS

December 12, 2016
Elvadas Nono
Related topics:
Developer toolsSecurity
Related products:
Developer ToolsetRed Hat Fuse

    Introduction

    Enabling SSL/TLS in a Fabric is slightly more complex than securing a jetty in a standalone Karaf container. In the following article, we are providing feedback on the overall process. For clarity and simplification, the article will be divided into two parts.

     

    Part1: The Management Console

    Part2: Securing Web Service:including gateway-http

     

    For the purpose of this PoC, the following environment will be used.

    Environment

    • Host  fabric1.example.com  (192.168.56.1),  localhost MacOS
    • Host  fabric2.example.com  (192.168.56.101), RHEL 7.2 Virtual Box VM
    • Host  fabric3.example.com  (192.168.56.102), RHEL 7.2 Virtual Box VM

     

    With the following components

    • jboss-fuse-6.3.0.redhat-187
    • jdk1.8.0_102

     

    Part1: Put the Management Console in HTTPS in a Fuse Fabric 6.3 Cluster.

     

    STEP1: Prepare/Generate a valid certificate/Keystore

    If you setup a fabric with three ensemble servers, each ensemble server should trust the two others; the most practical approach to do this is to create a certificate authority to sign all the individual certificates. For the purpose of this demo we are creating a self signed certificate with  all the fabricXX.example.com  in the Subject Alternative section.

     

    keytool -genkeypair -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -validity 365 -keystore san.demo.jks -storepass Cluster01# -keypass Cluster01# -dname cn=fabric1.example.com -alias demo
    
    -ext SAN=dns:fabric1.example.com,dns:fabric2.example.com,dns:fabric3.example.com

     

    This certificate should be populated on the three hosts in the same folder location, for this demo the file is stored in  /shared/fuse/certs/

     

    STEP2: Edit the EXTRA_JAVA_OPTS on all hosts.

    p class="p1">vi $FUSE_HOME/bin/setenv

    export EXTRA_JAVA_OPTS="-Djavax.net.ssl.trustStore=/shared/fuse/certs/san.demo.jks -Djavax.net.ssl.trustStorePassword=Cluster01# -Djavax.net.ssl.keyStore=/shared/fuse/certs/san.demo.jks -Djavax.net.ssl.keyStorePassword=Cluster01# "

    This will make your certs trusted by client code in fuse also. for debugging purpose you can add the options

      -Djavax.net.debug=ssl to have all the exception trace if any during the SSL handshake process.

      -Djava.rmi.server.logCalls=true , to get all RMI Exceptions

    STEP 3: Start Fuse and create the Fabric

    ./fuse
    
    JBossFuse:karaf@fabric1> fabric:create --clean --resolver manualip --global-resolver manualip --manual-ip fabric1.example.com --force

    Waiting for container: fabric1

    It may take a couple of seconds for the container to provision...

    You can use the --wait-for-provisioning option, if you want this command to block until the container is provisioned.

    JBossFuse:karaf@fabric1> fabric:wait-for-provisioning

    SUCCESS

     

    JBossFuse:karaf@fabric1> fabric:info
    
    Fabric Release:            1.2.0.redhat-630187
    Web Console:               http://fabric1.example.com:8181/hawtio
    Rest API:
    Git URL:                   http://fabric1.example.com:8181/git/fabric/
    Jolokia URL:               http://fabric1.example.com:8181/jolokia
    ZooKeeper URI:             fabric1.example.com:2181
    Maven Download URI:        http://fabric1.example.com:8181/maven/download/
    Maven Upload URI:          http://fabric1.example.com:8181/maven/upload/

    From fabric2.example.com and fabric3.example.com, run the fabric join command

    JBossFuse:karaf@fabric2>fabric:join --resolver manualip --manual-ip  fabric2.example.com --force  fabric1.example.com:2181
    JBossFuse:karaf@fabric3>fabric:join --resolver manualip --manual-ip  fabric3.example.com --force  fabric1.example.com:2181

     

    The --resolver --global-resolver and --manual-ip are very important, if they do not match , certificate validation will failed

     

    JBossFuse:karaf@fabric1> container-resolver-list
    
    [id]     [resolver]  [local hostname]        [local ip]      [public hostname]  [public ip]  [manual ip]
    fabric1  manualip    fabric1.example.com     192.168.56.1                                    fabric1.example.com
    fabric2  manualip    fabric2.example.com     192.168.56.101                                  fabric2.example.com
    fabric3  manualip    fabric3.example.com     192.168.56.102                                  fabric3.example.com

     

    STEP 4: Create the secure SSL profile

    Create a secure profile ssl

    JBossFuse:karaf@root> profile-create --parent default ssl
    profile-edit --pid org.ops4j.pax.web/org.osgi.service.http.enabled=false ssl
    profile-edit --pid org.ops4j.pax.web/org.osgi.service.http.secure.enabled=true ssl
    profile-edit --pid org.ops4j.pax.web/org.osgi.service.http.port.secure='${port:8443,8543}' ssl
    profile-edit --pid org.ops4j.pax.web/org.ops4j.pax.web.ssl.keystore='/shared/fuse/certs/san.demo.jks' ssl
    profile-edit --pid org.ops4j.pax.web/org.ops4j.pax.web.ssl.password=Cluster01# ssl
    profile-edit --pid org.ops4j.pax.web/org.ops4j.pax.web.ssl.keypassword=Cluster01# ssl

    Check the created profile
    JBossFuse:karaf@fabric1> profile-display ssl

    Profile id: ssl

    Version   : 1.0

    Attributes:

      parents: default

    Containers:

    Container settings

    ----------------------------

    Configuration details

    ----------------------------

    PID: org.ops4j.pax.web   org.ops4j.pax.web.ssl.password Cluster01#   org.osgi.service.http.enabled false   org.ops4j.pax.web.ssl.keypassword Cluster01#   org.osgi.service.http.secure.enabled true   org.osgi.service.http.port.secure ${port:8443,8543}   org.ops4j.pax.web.ssl.keystore /shared/fuse/certs/san.demo.jks

    Other resources

    ----------------------------

    STEP 5: Put the fabric in HTTPS

    By adding the ssl profile to the fabric1, for example, the fabric turns in https. You can repeat the operation for fabric2 and fabric3.

     

    JBossFuse:karaf@fabric1> container-add-profile fabric1 ssl
    
    JBossFuse:karaf@fabric1> container-add-profile fabric2 ssl
    
    JBossFuse:karaf@fabric1> container-add-profile fabric3 ssl

     

    JBossFuse:karaf@fabric1> log:tail | grep "Pax Web available"

    2016-11-15 11:29:59,802 | INFO  | onfig-1-thread-3 | JettyServerImpl                  | 117 - org.ops4j.pax.web.pax-web-jetty - 4.3.0 | Pax Web available at [0.0.0.0]:[8443]

     

    JBossFuse:karaf@fabric1> fabric:info
    Fabric Release:                1.2.0.redhat-630187
    Web Console:                   https://fabric1.example.com:8443/hawtio
    Rest API:
    Git URL:                       https://fabric1.example.com:8443/git/fabric/
    Jolokia URL:                   https://fabric1.example.com:8443/jolokia
    ZooKeeper URI:                 fabric1.example.com:2181
    Maven Download URI:            https://fabric1.example.com:8443/maven/download/
    Maven Upload URI:              https://fabric1.example.com:8443/maven/upload/

     

    console

    STEP 6: Creating Child containers

    Connections from child containers also need to be trusted (e.g. Maven proxy, communication with fabric ensemble.) To create a child container with the ssl profile follow the following steps:

    • create the child container with ssl profile  container-create-child --profile ssl fabric1 node1
    • edit the child container JVM Options : pass the trustStore file and password
    container-edit-jvm-options node1 '-Djavax.net.ssl.trustStore=/shared/fuse/certs/san.demo.jks -Djavax.net.ssl.trustStorePassword=Cluster01#'
    • restart the container 
          container-stop node1
    
           container-start node1

     

    More Information

    https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.3/pdf/Security_Guide/JBoss_Enterprise_Application_Platform-6.3-Security_Guide-en-US.pdf

     

    Last updated: February 26, 2024

    Recent Posts

    • Every layer counts: Defense in depth for AI agents with Red Hat AI

    • Fun in the RUN instruction: Why container builds with distroless images can surprise you

    • Trusted software factory: Building trust in the agentic AI era

    • Build a zero trust AI pipeline with OpenShift and RHEL CVMs

    • Red Hat Hardened Images: Top 5 benefits for software developers

    Red Hat Developers logo LinkedIn YouTube Twitter Facebook

    Platforms

    • Red Hat AI
    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    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
    © 2026 Red Hat

    Red Hat legal and privacy links

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

    Chat Support

    Please log in with your Red Hat account to access chat support.