| ... |
| * *2-way* -- Mutual client and server authentication. The server and client applications each have a keystore for their private keys and each has a truststore that authenticates the other. 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. |
| For non-anonymous SSL, the suite is negotiated - see _enabled\-cipher\-suites_ _enabled-cipher-suites_ below below. |
| Depending upon the SSL mode, follow the guidelines of your organization around creating/obtaining private keys. If you have no organizational requirements, then follow this guide to create [self-signed certificates|Generating Self Signed Certificates] with their respective keystores and truststores. The following keystore and truststore combinations are required for different SSL modes. The names of the files can be chosen by the user. The following files are shown for example purposes only. |
| ... |
| Properties |
| * [mode|#Encryption Modes] - \- 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 ephemeral DH key exchange. Only applies to the 'teiid' transport and no other config values are needed in this mode.
_enabled_ = traffic will be secured with SSL using the other configuration properties. "teiid" transport clients *must* connect using SSL with the mms protocol. ODBC "pg" transport clients may optionally use SSL. |
| ... |
| * keystore/type - Keystore type created by the keytool. Optional - by default "JKS" is used. |
| * [authentication-mode|#SSL Authentication Modes] - \- anonymous\|1-way\|2-way, Type of SSL Authentication Mode. |
| * keymanagement-algorithm - Type of key algorithm used. Optional - by 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. Optional - defaults to all supported cipher suites for the vm. |
| Alternatively, you can use the CLI to add or modify the transport configuration |
| {note} |
| You will typically use the CLI to modify the transport configuration. |
| {note} {code} |
| /subsystem=teiid/transport=jdbc:write-attribute(name=ssl-mode,value=enabled) /subsystem=teiid/transport=jdbc:write-attribute(name=ssl-authentication-mode,value=1-way) /subsystem=teiid/transport=jdbc:write-attribute(name=ssl-ssl-protocol,value=TLSv1) /subsystem=teiid/transport=jdbc:write-attribute(name=ssl-keymanagement-algorithm,value=SunX509) /subsystem=teiid/transport=jdbc:write-attribute(name=ssl-enabled-cipher-suites,value="SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA") /subsystem=teiid/transport=jdbc:write-attribute(name=keystore-name,value=ssl-example.keystore) /subsystem=teiid/transport=jdbc:write-attribute(name=keystore-password,value=redhat) /subsystem=teiid/transport=jdbc:write-attribute(name=keystore-type,value=JKS) /subsystem=teiid/transport=jdbc:write-attribute(name=keystore-key-alias,value=teiid) /subsystem=teiid/transport=jdbc:write-attribute(name=keystore-key-password,value=redhat) /subsystem=teiid/transport=jdbc:write-attribute(name=truststore-name,value=ssl-example.truststore) /subsystem=teiid/transport=jdbc:write-attribute(name=truststore-password,value=redhat) {code} |
| {info:Using password Vault} 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|https://community.jboss.org/docs/DOC-17248] |
| ... |
| h1. Encryption Strength |
| Both anonymous SSL and login only (JDBC specific) 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. Users can restrict the cipher suites used by specifying the _enabled\-cipher\-suites_ _enabled-cipher-suites_ property above in the SSL configuration. |
| h1. Examples * [1-way ssl authentication mode|https://developer.jboss.org/docs/DOC-55352] |
There are two types of remote transports, each with it's own encryption configuration:
| The pg transport for ODBC access defaults to clear text username password authentication. |
SSL configuration is part of the "transport" configuration in the Teiid subsystem.
Teiid supports a couple different encryption modes based on the "mode" attribute on "ssl" element.
For non-anonymous SSL, the suite is negotiated - see enabled-cipher-suites below below.
Depending upon the SSL mode, follow the guidelines of your organization around creating/obtaining private keys. If you have no organizational requirements, then follow this guide to create self-signed certificates with their respective keystores and truststores. The following keystore and truststore combinations are required for different SSL modes. The names of the files can be chosen by the user. The following files are shown for example purposes only.
1-way
2-way
<ssl mode="enabled" authentication-mode="1-way" ssl-protocol="TSLv1" 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" key-password="passwd1"/>
<truststore name="cert.truststore" password="passwd"/>
</ssl>
Properties
| SSLv3 is not recommended due to the POODLE security vulnerability. |
Alternatively, you can use the CLI to add or modify the transport configuration
/subsystem=teiid/transport=jdbc:write-attribute(name=ssl-mode,value=enabled) /subsystem=teiid/transport=jdbc:write-attribute(name=ssl-authentication-mode,value=1-way) /subsystem=teiid/transport=jdbc:write-attribute(name=ssl-ssl-protocol,value=TLSv1) /subsystem=teiid/transport=jdbc:write-attribute(name=ssl-keymanagement-algorithm,value=SunX509) /subsystem=teiid/transport=jdbc:write-attribute(name=ssl-enabled-cipher-suites,value="SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA") /subsystem=teiid/transport=jdbc:write-attribute(name=keystore-name,value=ssl-example.keystore) /subsystem=teiid/transport=jdbc:write-attribute(name=keystore-password,value=redhat) /subsystem=teiid/transport=jdbc:write-attribute(name=keystore-type,value=JKS) /subsystem=teiid/transport=jdbc:write-attribute(name=keystore-key-alias,value=teiid) /subsystem=teiid/transport=jdbc:write-attribute(name=keystore-key-password,value=redhat) /subsystem=teiid/transport=jdbc:write-attribute(name=truststore-name,value=ssl-example.truststore) /subsystem=teiid/transport=jdbc:write-attribute(name=truststore-password,value=redhat)
| 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 |
Both anonymous SSL and login only (JDBC specific) 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. Users can restrict the cipher suites used by specifying the enabled-cipher-suites property above in the SSL configuration.