anchor.diff:  algorithm::
   The optional algorithm name for the KeyManagerFactory used to create the
   KeyManager represented by this object's configuration.  See the
  -http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html[Java
  +https://docs.oracle.com/en/java/javase/11/security/java-secure-socket-extension-jsse-reference-guide.html[Java
   Secure Socket Extension Reference Guide] for information about standard
   algorithm names.
   keyStore::
  -See <<CamelConfigurationUtilities-KeyStoreParameters>>. This optional property represents the key store that provides key
  +This optional property represents the key store that provides key
   material to the key manager.  This is typically configured with a key
   store containing a user or server private key.  In some cases, such as
   when using PKCS#11, the key store is omitted entirely.
   
  -[[CamelConfigurationUtilities-TrustManagersParameters]]
   === TrustManagersParameters
   
   TrustManagersParameters contain the following elements:
  
positive.code: SSLEngine engine = scp.createSSLEngine();
  -------------------------------------------------------------------
  
  [[CamelConfigurationUtilities-UsingCamelPropertyPlaceholders]]
  == Using Camel Property Placeholders
  
  This configuration utility fully supports the use of property
  placeholders (see xref:using-propertyplaceholder.adoc[Using
  PropertyPlaceholder]) in all configuration fields.  In order to support
  this feature, the configuration utility objects must be configured with
  a reference to a Camel context.  All of the utility classes except for
  CipherSuitesParameters and SecureSocketProtocolsParameters provide a
  setter method for providing the context reference.  Do not confuse the
  lack of a setter on CipherSuitesParameters and
  SecureSocketProtocolsParameters as an indication that you cannot use
  property placeholders when configuring these classes.  The lack of a
  setter is an internal implementation detail and full placeholder support
  is available for both of the configuration classes.
  
  The following example code demonstrates how to create a KeyStore
  instance based on configuration options provided by the Camel Properties
  Component and property placeholder support.
  
  [source,java]
  ---------------------------------------------------
  PropertiesComponent pc = new PropertiesComponent();
  pc.setLocation("file:./jsse-test.properties");
  
  CamelContext context = new DefaultCamelContext();
  context.addComponent("properties", pc);
  
  KeyStoreParameters ksp = new KeyStoreParameters();
  ksp.setContext(camelContext);
  ksp.setType("{{keyStoreParameters.type}}");
  ksp.setProvider("{{keyStoreParameters.provider}}");
  ksp.setResource("{{keyStoreParameters.resource}}");
  ksp.setPassword("{{keyStoreParamerers.password}}");
  
  KeyStore keyStore = ksp.createKeyStore();
  ---------------------------------------------------
  
  [[CamelConfigurationUtilities-XMLConfiguration]]
  === XML Configuration
  
  [NOTE]
  ====
  Note that XML configuration is supported in both Spring and Blueprint
  format.
  ====
  
  [[CamelConfigurationUtilities-SettingClientAuthenticationOntheServerSide.1]]
  === Setting Client Authentication On the Server Side
  
  This configuration sets the server side aspects of the TLS configuration
  to require client authentication during the handshake process.  This
  configuration uses the default trust store and a custom key store to
  provide key material for both the server and client sides of the
  SSLContext.
  
  [source,xml]
  ---------------------------------------------------------------------------------------------------------------
  <beans xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:camel="http://camel.apache.org/schema/spring"
         xsi:schemaLocation="
         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
         http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
  
    <camel:sslContextParameters
        id="mySslContext">
  
      <camel:keyManagers
          keyPassword="keyPassword">
        <camel:keyStore
            resource="/users/home/server/keystore.jks"
            password="keystorePassword"/>
      </camel:keyManagers>
  
      <camel:serverParameters
          clientAuthentication="WANT"/>
  
    </camel:sslContextParameters>
  
  </beans>
  ---------------------------------------------------------------------------------------------------------------
  
  [[CamelConfigurationUtilities-ConfiguringDifferentOptionsontheClientandServerSide.1]]
  === Configuring Different Options on the Client and Server Side
  
  In this example, both the client and server sides share the same custom
  key store; however, the client side allows any supported cipher suite
  while the server side will use the default cipher suite filter and
  exclude any cipher suites that match the patterns .*_NULL_.* and
  .*_anon_.*.
  
  [source,xml]
  --------------------------------------------------------------
  <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
         xmlns:camel="http://camel.apache.org/schema/blueprint">
  
    <camel:sslContextParameters
        id="mySslContext">
  
      <camel:keyManagers
          keyPassword="keyPassword">
        <camel:keyStore
            resource="/users/home/server/keystore.jks"
            password="keystorePassword"/>
      </camel:keyManagers>
  
      <camel:clientParameters>
        <camel:cipherSuitesFilter>
          <camel:include>.*</camel:include>
        </camel:cipherSuitesFilter>
      </camel:clientParameters>
  
    </camel:sslContextParameters>
  
  </blueprint>
  --------------------------------------------------------------
  
  [[CamelConfigurationUtilities-UsingCamelPropertyPlaceholders.1]]
  === Using Camel Property Placeholders
  
  This configuration utility fully supports the use of property
  placeholders (see xref:using-propertyplaceholder.adoc[Using
  PropertyPlaceholder]) in all configuration fields for XML based
  configuration as well.  In order to support this feature, the
  configuration utility objects must be configured with a reference to a
  Camel context.  The Spring and Blueprint namespace handlers will
  automatically inject the reference to the context for you when there is
  one Camel context in scope. If you have more than one Camel context
  instance in your XML defined context, you can indicate which context
  reference to configure by specifying the camelContextId attribute in the
  top-level XML element.
  
  The following example code demonstrates how to create a KeyStore
  instance based on configuration options provided by the Camel Properties
  Component and property placeholder support. The Camel context with the
  ID example is used to resolve the property placeholders.
  
  [source,xml]
  ---------------------------------------------------------------------------------------------------------------
  <beans xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:camel="http://camel.apache.org/schema/spring"
         xsi:schemaLocation="
         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
         http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
  
    <camel:camelContext id="example"/>
  
    <camel:camelContext id="example2"/>
  
    <camel:keyStoreParameters
      id="ksp"
      camelContextId="example"
      resource="{{keyStoreParameters.resource}}"
      type="{{keyStoreParameters.type}}"
      provider="{{keyStoreParameters.provider}}"
      password="{{keyStoreParamerers.password}}"/>
  
  </beans>
  ---------------------------------------------------------------------------------------------------------------
  
  [[CamelConfigurationUtilities-UsingSpringBoot.1]]
  === Using Spring-Boot
  
  Camel provides a global SSL configuration that can be customized using the
  spring-boot _application.properties_ or _application.yml_ file.
  
  Components do not use the global SSL configuration by default, but this behavior can
  be changed using component-specific options. A flag named _useGlobalSslContextParameters_ is
  included in all components that support the global SSL configuration.
  
  The following example shows how to configure global SSL parameters (in _application.yml_) and enable their
  usage in the _camel-undertow_ component.
  
  [source,yaml]
  ----
  camel:
    # To enable global SSL in undertow
    component:
      undertow:
        use-global-ssl-context-parameters: true
    ssl:
      config:
        key-managers:
          key-password: "changeit"
          key-store:
            resource: "/keystore.p12"
            password: "changeit"
            type: "PKCS12"
        trust-managers:
          key-store:
            resource: "/cacerts"
            password: "changeit"
            type: "jks"
  ----
  
negative.code: include patterns.  If no cipherSuites and no cipherSuitesFilter are
  present, the default patterns applied are: +
  Includes .\*; +
  Excludes .*_NULL_.*, .\*_anon_.*, .\*DES.*, .\*EXPORT.*, .\*MD5, .*RC4.*
  secureSocketProtocols::
  This optional property represents a collection of explicitly named
  secure socket protocols, such as SSLv3/TLS/etc., to enable on both the
  