ClientTlsOptions
Configures connections to the TLS-protected endpoint of servers, when IG is client-side.
When IG sends requests to a proxied application, or requests services from a third-party application, IG is acting client-side, as a client of the application. The application is acting as a server.
Use ClientTlsOptions in "ClientHandler", "ReverseProxyHandler", and "AmService".
Usage
{ "type": "ClientTlsOptions", "config": { "keyManager": KeyManager reference or [ KeyManager reference, ...], "trustManager": TrustManager reference or [ TrustManager reference, ...], "sslCipherSuites": [ configuration expression<string>, ...], "sslContextAlgorithm": configuration expression<string>, "sslEnabledProtocols": [ configuration expression<string>, ...], "alpn": configuration object } }
Properties
"keyManager"
: KeyManager reference or array of KeyManager references, optionalOne or more KeyManager objects to manage IG's private keys. Key managers are used to prove the identity of the local peer during TLS handshake, as follows:
When ServerTlsOptions is used in an HTTPS connector configuration (server-side), the KeyManagers to which ServerTlsOptions refers are used to prove this IG's identity to the remote peer (client-side). This is the usual TLS configuration setting (without mTLS).
When ClientTlsOptions is used in a ClientHandler or ReverseProxyHandler configuration (client-side), the KeyManagers to which ClientTlsOptions refers are used to prove this IG's identity to the remote peer (server-side). This configuration is used in mTLS scenarios.
If
keyManager
is not configured, this IG can't prove its identity to the remote peer.Provide the name of one or more of the following KeyManager objects defined in the heap, or configure one or more of the following KeyManager objects inline:
KeyManager
SecretsKeyManager
Default:
keyManager
is not configured.See also "KeyManager".
"sslCipherSuites"
: array of configuration expression<string>, optionalArray of cipher suite names, used to restrict the cipher suites allowed when negotiating transport layer security for an HTTPS connection.
For information about the available cipher suite names, see the documentation for the Java Virtual Machine (JVM). For Oracle Java, see the list of JSSE Cipher Suite Names .
Default: Allow any cipher suite supported by the JVM.
"sslContextAlgorithm"
: configuration expression<string>, optionalThe
SSLContext
algorithm name, as listed in the table ofSSLContext
Algorithms for the Java Virtual Machine (JVM).Default:
TLS
"sslEnabledProtocols"
: array of configuration expression<string>, optionalArray of protocol names, used to restrict the protocols allowed when negotiating transport layer security for an HTTPS connection.
For information about the available protocol names, see the documentation for the Java Virtual Machine (JVM). For Oracle Java, see the list of Additional JSSE Standard Names .
Default: Allow any protocol supported by the JVM.
"trustManager"
: TrustManager reference or array of TrustManager references, optionalOne or more TrustManager objects to manage IG's public key certificates. Trust managers are used to verify the identity of a peer by using certificates, as follows:
When ServerTlsOptions is used in an HTTPS connector configuration (server-side), the TrustManagers to which ServerTlsOptions refers are used to verify the remote peer's identity (client-side). This configuration is used in mTLS scenarios.
When ClientTlsOptions is used in a ClientHandler or a ReverseProxyHandler configuration (client-side), the TrustManager to which ClientTlsOptions refers are used to verify the remote peer's identity (server-side). This is the usual TLS configuration setting (without mTLS).
If
trustManager
is not configured, IG uses the default Java truststore to verify the remote peer's identity. The default Java truststore depends on the Java environment. For example,$JAVA_HOME/lib/security/cacerts
.Provide the name of one or more of the following TrustManager objects defined in the heap, or configure one or more of the following TrustManager objects inline:
TrustManager
SecretsTrustManager
TrustAllManager
Default:
trustManager
is not configured.See also "TrustManager".
"alpn"
: configuration object, optionalNote
This property is used only when IG is running in standalone mode.
Defines how to use the Application-Layer Protocol Negotiation (ALPN) extension for TLS connections.
{ "alpn": { "enabled": configuration expression<boolean> } }
enabled
: configuration expression<boolean>, optionaltrue
: Enable ALPN. Required for HTTP/2 connections over TLS.false
: Disable ALPN.
Default:
true
Example
{ "tls": { "type": "ClientTlsOptions", "config": { "sslContextAlgorithm": "TLSv1.2", "keyManager": { "type": "KeyManager", "config": { "keystore": { "type": "KeyStore", "config": { "url": "file://${env['HOME']}/keystore.jks", "passwordSecretId": "keymanager.keystore.secret.id", "secretsProvider": "SystemAndEnvSecretStore" } }, "passwordSecretId": "keymanager.secret.id", "secretsProvider": "SystemAndEnvSecretStore" } }, "trustManager": { "type": "TrustManager", "config": { "keystore": { "type": "KeyStore", "config": { "url": "file://${env['HOME']}/truststore.jks", "passwordSecretId": "trustmanager.keystore.secret.id", "secretsProvider": "SystemAndEnvSecretStore" } } } } } } }