SSL is an important foundation for many TDI security features. We need a working-level knowledge of SSL in order to fully exploit the capabilities in TDI.
The following Connectors support SSL with properly configured IBM TDI Servers:
SSL provides for encryption and authentication of network traffic between two remote communicating parties. Most production deployments of TDI make use of SSL. That is why SSL support is one of the major security features of TDI. More information on SSL as well as information on using SSL in Java programs from a development point of view can be found at http://java.sun.com/j2se/1.5.0/docs/guide/security/jsse/JSSERefGuide.html
TDI can be used as a client, as a server or as both at the same time. Configuring TDI for SSL when used as a client is different from configuring TDI when used as a server. That is why this section has been divided in two sub-sections - Server SSL configuration of TDI components and Client SSL configuration of TDI components.
When a TDI component is used as a server (for example a Server mode Connector) SSL mandates that a keystore to be used by IBM TDI must be defined. For information on keystores and truststores, see the guide at http://java.sun.com/j2se/1.5.0/docs/guide/security/jsse/JSSERefGuide.html. The following steps are required to enable SSL support for IBM TDI as a server:
RMI is enabled by default in the TDI server. Properties for server authentication carry the default keystore property values.
## client authentication javax.net.ssl.keyStore=serverapi\testadmin.jks {protect}-javax.net.ssl.keyStorePassword=administrator javax.net.ssl.keyStoreType=jks
Notes:
When a TDI component is used as a client (for example the LDAP Connector) SSL mandates that a truststore to be used by TDI must be defined. For information on keystores and truststores, see the guide at http://java.sun.com/j2se/1.5.0/docs/guide/security/jsse/JSSERefGuide.html.
The following steps are required to enable SSL support for IBM TDI as a client:
These four lines (comments starting with #) are no longer needed for client and server authentication to the TDI server. Stores that belong to TDI are set up to be used by default. This is part of enabling Remote Method Invocation (RMI) by default.
# Keystore file information for the server TDI authentication. # It is used to provide the public key of the TDI to the SSL enabled client. # javax.net.ssl.keyStore=D:\test\clientStore.jks # javax.net.ssl.keyStorePassword=secret # javax.net.ssl.keyStoreType=jks
TDI truststore and keystore do not play any part in SSL configuration for the Domino Change Detection connector. See section Lotus Domino SSL specifics for more information.
If a TDI component is used as a client and the server with which it communicates requires SSL client authentication, then apart from a truststore, TDI needs a keystore as well. In this case the keystore can be defined just like it is defined when TDI is used a server - see the section Server SSL configuration of TDI components.
Client TDI components which support SSL client authentication do not normally need a "SSL client authentication" check box as do TDI server components. All such a client TDI component needs in order to prove its identity to the server is to have its keystore generated and configured in global.properties or solution.properties. If the server requires an SSL client certificate then the client SSL library automatically sends the client's certificate from the keystore configured in global.properties or solution.properties.
Do the following steps to configure SSL for IBM TDI and Microsoft Active Directory:
All Domain Controllers automatically request a certificate from the CA, and support LDAP using SSL on port 636.
You must install IIS before installing the certificate server.
The next page automatically highlights the CA certificate.
A new download window opens.
keytool.exe is found in root_directory/jvm/jre/bin, or root_directory/jvm/bin, depending on your platform.Use the following command:
jvm\jre\bin\keytool -import -file certnew.cer -keystore keystore_name.jks -storepass password-alias keyalias_nameFor example, assume the following values:
Keystorename = idi.jks Password = secret Keyalias name = AD_CAThe command looks like this script:
C:\Program Files\IBM\TDI\V7.1\jvm\jre\bin\keytool -import -file certnew.cer -keystore idi.jks -storepass secret -alias AD_CATo verify the contents of the keystore, type the following script:
C:\Program Files\IBM\TDI\V7.1\jvm\jre\bin\keytool -list -keystore idi.jks -storepass secretThe following lines result:
Keystore type: jks Keystore provider: SUN Your keystore contains 1 entry: ad_ca, Mon Nov 04 22:11:46 MST 2002, trustedCertEntry, Certificate fingerprint (MD5): A0:2D:0E:4A:68:34:7F:A0:21:36:78:65:A7:1B:25:55
#server authentication #example javax.net.ssl.trustStore=c:\test\idi.jks javax.net.ssl.trustStorePassword=secret javax.net.ssl.trustStoreType=jks #client authentication #example javax.net.ssl.keyStore=c:\test\idi.jks javax.net.ssl.keyStorePassword=secret javax.net.ssl.keyStoreType=jks
The TDI Windows service wrapper permits you to start TDI as multiple service instances.
We can configure SSL properties for server authentication, client authentication, and PKCS#11 support. See Using cryptographic keys located on hardware devices on Public Key Cryptography Standards (PKCS).
Property | Default value | Description |
---|---|---|
javax.net.ssl.trustStore | serverapi\testadmin.jks | Location of the truststore files. |
{protect}-javax.net.ssl.trustStorePassword | administrator(encrypted by default) | truststore password. |
javax.net.ssl.trustStoreType | jks | Type of the truststore. |
Property | Default value | Description |
---|---|---|
javax.net.ssl.keyStore | serverapi\testadmin.jks | keystore files location. |
{protect}-javax.net.ssl.keyStorePassword | administrator(encrypted by default) | keystore password. |
javax.net.ssl.keyStoreType | jks | Keystore type. |
Property | Default value | Description |
---|---|---|
com.ibm.di.pkcs11cfg | etc\pkcs11.cfg | Specify the path of the configuration file required to initialize the IBM PKCS11 implementation provider. Added in TDI 7.0. |
com.ibm.di.server.pkcs11 | false | Use pkcs11 compliant crypto devices for ssl. Added in TDI 7.0. |
com.ibm.di.server.pkcs11.library | none | Specify the path to the PKCS11client library. Added in TDI 7.0. |
com.ibm.di.server.pkcs11.slot | none | Specify the slot number of the device. |
{protect}-com.ibm.di.server.pkcs11.pass | none | Access the pkcs11 compliant crypto device using this password. Encrypted by default. Added in TDI 7.0. |
In order to demonstrate how TDI can be configured for SSL when used as a server and also when used as a client, two examples are provided - one deploying the LDAP Server Connector and one deploying the LDAP Connector.
This example uses the LDAP Server Connector. The LDAP Server Connector listens for LDAP requests. When an LDAP request arrives the Connector parses the request and provides the request data to the hosting AssemblyLine. The AssemblyLine then processes the request and provides the data for the response to the LDAP Server Connector, so that it can build the LDAP response and send it back to the LDAP client. What follows is a step by step guide how to configure TDI for SSL when the LDAP Server Connector is used:
This example uses the LDAP Connector. The LDAP Connector connects to an LDAP Server and sends an LDAP request. After the Server returns the LDAP response the LDAP Connector provides that response to the AssemblyLine for further processing. What follows is a step by step guide how to configure TDI for SSL when the LDAP Connector is used:
The following command line imports an existing certificate into a keystore (the keystore is created if not already existing):
keytool -import -trustcacerts -file myLDAPServerCert.cer -keystore myClientTruststore.jks -storepass myclientTruststorePassword -alias myTrustedLDAPServerAlias
This command line imports a the myLDAPServerCert.cer certificate under alias myTrustedLDAPServerAlias into the myClientTruststore.jks keystore. The password to access the keystore is myclientTruststorePassword.