Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-12719

Ability to load an SSLContextParameter with a Keystore containing multiple keys (aliases)

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.22.0
    • Future
    • camel-core
    • None
    • Unknown
    • Patch

    Description

      Hello,
      I wish I could initialize a single SSLContextParameters at camel startup containing my truststore.jks (> 1 alias) and my keystore.jks (> 1 alias) in order to call it (refer to) in Routes (FTPs, HTTPs) without have to redefine a new SSLContextParameter for each EndPoint.

      <camel:sslContextParameters id="sslIContextParameters">
      <camel:trustManagers>
      <camel:keyStore password="${truststore.jks.file.password}"
      resource="${truststore.jks.file.location}" />
      </camel:trustManagers>
      <camel:keyManagers >
      <camel:keyStore password="${keystore.jks.file.password}"
      resource="${keystore.jks.file.location}" />
      </camel:keyManagers>
      </camel:sslContextParameters>

      When my Keystore contains more than 1 alias, I have the following error when creating the Route at startup : 

      Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: https4://<host>:<port>/<address>?authPassword=RAW(password)&authUsername=login&authenticationPreemptive=true&bridgeEndpoint=true&sslContextParameters=sslContextParameters&throwExceptionOnFailure=true due to: Cannot recover key

      due to

      Caused by: java.security.UnrecoverableKeyException: Cannot recover key

       

      When my keystore contains only one key, it works very well.

      <camel:sslContextParameters id="sslIContextParameters">
      <camel:trustManagers>
      <camel:keyStore password="${truststore.jks.file.password}"
      resource="${truststore.jks.file.location}" />
      </camel:trustManagers>
      <camel:keyManagers keyPassword="keyPassword">
      <camel:keyStore password="${keystore.jks.file.password}"
      resource="${keystore.jks.file.location}" />
      </camel:keyManagers>
      </camel:sslContextParameters>

       

      So I would like to be able to call my SSLContextParameter for different EndPoint by specifying (if necessary) the alias of the Keystore needed (by specifying the alias and / or password of the key)

       

      Objectif in my project :

      • 1 TrustStore.jks 
      • 1 Keystore.jsk
      • 1 unique SSLContextParameter
      • > 200 camelRoutes FTPs/HTTPs (ssl one way ou two way)

       

      Thank a lot

       

       

      Attachments

        Activity

          People

            Unassigned Unassigned
            Boosy Florian B.
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated: