To configure SSL in Teiid, based on the deployment mode, use the following: |
The Teiid's configuration file\(s) |
|
* In standalone mode, use standalone\-teiid.xml * In domain mode, run the CLI script: bin/scripts/teiid-domain-mode-install.cli |
* standalone\-teiid.xml/domain\-teiid.xml * domain-teiid.xml |
|
The configuration file will contain transports defined for access into Teiid, and each transport contains the properties to configure SSL. |
contain transports defined for access into Teiid, and transport contains the properties to configure SSL for socket. |
|
There are three two types of transports, each with it's own SSL configuration: |
|
* "jdbc" - Defaults to encrypt login traffic at a message level using 128 bit AES with an ephemeral DH key exchange. There is nothing to configure in order for login traffic to be encrypted. |
* "teiid" - Default configuration to only encrypt login traffic, none of the other properties are used. |
* "odbc" "pg" type - Defaults to no SSL. |
* "embedded" - Defaults to no SSL. |
|
{code:title=Example Configurations} |
<!-- default, with no ssl configured, will encrypt login traffic --> <transport name="jdbc" socket-binding="teiid-jdbc" protocol="teiid" > ... </transport> <!-- enable ssl using specific encryption --> <transport name="jdbc" socket-binding="teiid-jdbc" protocol="teiid" > |
<ssl mode="enabled" mode="login" authentication-mode="1-way" ssl-protocol="SSLv3" keymanagement-algorithm="algo" |
enabled-cipher-suites="SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA"> <keystore name="cert.keystore" password="passwd" type="JKS" key-alias="alias"/> <truststore name="cert.truststore" password="passwd"/> |
</ssl> |
... </transport> <!-- disable ssl --> <transport name="jdbc" socket-binding="teiid-jdbc" protocol="teiid" > <ssl mode="disabled" /> ... </transport> |
{code} |
Properties: |
|
* mode - disabled | enabled | login |
* mode - diabled|login|enabled |
_disabled_ = no transport or message level security will be used. |
_login_ = only the login traffic will be encrypted at a message level using 128 bit AES with an ephemerial DH key exchange. No other config values are needed in this mode. |
_enabled_ = traffic will be secured using the other configuration properties. |
_login_ = (Default) encrypt login traffic at a message level using 128 bit AES with an ephemeral DH key exchange |
* ssl\-protocol- Type of SSL protocol to be used. Default is TLSv1 |
* keystore/type - Keystore type created by the keytool. Default "JKS" is used. |
* authentication\-mode - anonymous|1\-way|2\-way, Type of SSL Authentication Mode. * keymanagement\-algorithm - Type of key algorithm used. Default is based upon the VM, e.g. "SunX509" |
* enabled\-cipher\-suites - A comma separated list of cipher suites allowed for encryption between server and client. The values must be valid supported cipher suites otherwise SSL connections will fail. * keystore/type - Keystore type created by the keytool. Default "JKS" is used. |
* keystore/name - The file name of the keystore, which contains the private key of the Server. The file name can be relative resource path available to the Teiid deployer classloader or an absolute file system path. A typical installation would place the keystore file in the conf directory of the profile where Teiid is deployed with a file name relative to the conf path. |
* keystore/password keystorePassword - password for the keystore. |
* keystore/key-alias - Alias name for the certificate that is in the key store. |
... |
* truststore/password - password for the truststore. |
* enabled\-cipher\-suites - A comma separated list of cipher suites allowed for encryption between server and client. The values must be valid supported cipher suites otherwise SSL connections will fail. |
{note} You can also use CLI to modify the transport configuration. |
... |
SSL supports multiple authentication modes. In most secure intranet environments, anonymous is suitable to just bulk encrypt traffic without the need to setup SSL certificates. |
* _anonymous_ \- no certificates are exchanged, settings are not needed for the keystore and truststore properties. Client must have {{org.teiid.ssl.allowAnon}} set to true \(the default) to connect to an anonymous server. |
|
* _1\-way_ \- the server will present a certificate, which is obtained from the keystore related properties. The client should have a truststore configured to accept the server certificate. |
|
* _2\-way_ \- the server will present a certificate, which is obtained from the keystore related properties. The client should have a truststore configured to accept the server certificate. The client is also expected to present a certificate, which is obtained from its keystore. The client certificate should be accepted by the trust store configured by the truststore related properties. |
h1. Encryption Strength |
Both anonymous SSL and login only encryption are configured to use 128 bit AES encryption by default. By default, 1\-way and 2\-way SSL allow for cipher suite negotiation based upon the default cipher suites supported by the respective Java platforms of the client and server. User can restrict the cipher suites used for encryption by specifying the _enabledCipherSuites_ property above in ssl configuration. |
The Teiid's configuration file(s)
contain transports defined for access into Teiid, and transport contains the properties to configure SSL for socket.
There are two types of transports, each with it's own SSL configuration:
<ssl mode="login" authentication-mode="1-way" ssl-protocol="SSLv3" keymanagement-algorithm="algo" enabled-cipher-suites="SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA"> <keystore name="cert.keystore" password="passwd" type="JKS" key-alias="alias"/> <truststore name="cert.truststore" password="passwd"/> </ssl>
Properties
You can also use CLI to modify the transport configuration. |
If you do not like to leave clear text passwords in the configuration file, then you can use JBoss AS vault mechanism for storing the keystore and truststore passwords. Use the directions defined here https://community.jboss.org/docs/DOC-17248 |
SSL supports multiple authentication modes. In most secure intranet environments, anonymous is suitable to just bulk encrypt traffic without the need to setup SSL certificates.
Both anonymous SSL and login only encryption are configured to use 128 bit AES encryption by default. By default, 1-way and 2-way SSL allow for cipher suite negotiation based upon the default cipher suites supported by the respective Java platforms of the client and server. User can restrict the cipher suites used for encryption by specifying the enabledCipherSuites property above in ssl configuration.