Note: Support removed for IBM WebSphere Application Server (Traditional WAS) with ELM version 7.0.3. Use WebSphere Liberty, either embedded and installed with ELM applications, or separately installed
There are a number of different articles on configuring a reverse proxy server for the CLM solution. While the articles are correct in nature, the implementation can be challenging as there are a number of steps.
As new technologies have been created (or just discovered / understood) we have sought to simplify the process to allow you to expedite the implementation. This article takes you through a concise process to enable a CLM public URI with no port.
There are two key parts to a clm deployment using a reverse proxy server.
The best way to setup this relationship is to create Plugins on the Application server (WebSphere) and put them onto the Web Server (IHS) (No Special Tools needed)
In order for the two servers to communicate, (in an SSL environment) we have to set up a trust. We do this using certificates.
Fortunately, when you create the plugin on the Application Server, it will automatically create the certificates for you. (This is one of the big changes from the other articles)
Keep in mind, There are multiple certificates that are needed in a CLM deployment with a reverse proxy server. You need one certificate to access the Web Server (IHS Server) and the IHS server will need a certificate to communicate with the Application Server. (The Web Server will need a certificate for each application server it communicates with.)
Best Practices is to keep these certificate in their own keystores.
Best practices is to have a separate keystore / certificate for each of our servers. We will be creating the keystore and certificate for the IHS server, but as noted above, the keystore and certificate for our Application servers will get created automatically.
You can use the command line (gskcmd) to create the keystore and certificate but we will be using a GUI based tool called Ikeyman.
C:\<IHS_Install_Directory>\java\jre\bin\ikeyman Example: C:\IBM\HTTPServer\java\jre\bin\ikeyman
2. Create the new key
3. For the Type select CMS, File name, IHS_key.kdb, and browse to the HTTPServer\bin directory.
Click OK
4. Enter a password (you won't forget) and select the "Stash password to a file" option
Click OK
5. Create a new certificate. Click the New Self-Signed button.
6. Enter a Key Label (I chose jazzapacheds.. but the name does not matter. Often times, the server name is used.)
For the Validity Period, I chose 3650 (10 years) so I don't have to come back next year and do this again.
Click OK
7. Make a note of the path name, you will need it in the next section.
8. Your are done creating your Keystore and Certificate.
Add (or uncomment) the following lines in httpd.conf, making sure that the values for the Key File and SSL Stash File directives match the names of the files generated in the previous section:
LoadModule ibm_ssl_module modules/mod_ibm_ssl.so Listen 0.0.0.0:443 ## Uncomment for IPv6 support: #Listen [::]:443 <VirtualHost *:443> SSLEnable </VirtualHost> KeyFile C:/IBM/HTTPServer/bin/IHS_key.kdb SSLStashFile C:/IBM/HTTPServer/bin/IHS_key.sth SSLDisable
3. Under "Container Settings" on the right side, expand Web Container Settings. Choose "Web Container".
4. Select Custom Properties
5. Add the following custom properties:
trusthostheaderport = true com.ibm.ws.webcontainer.extracthostheaderport = true
1. Go to Servers / Server Types / Web servers
2. Click "New"
3. Enter information regarding your server
When choosing a Server name, it is recommended you choose a name that matches your application server deployment.
For example. if your environment will have JTS on one server, RTC on another server, RQM on a third, etc... then you should consider the following (respective) names:
Server name:
If your server will have all of the applications on the same server, then simply calling it something like clmwebserver would be fine.
The name you choose for the Server name will simply be the name of the directory that gets created in the steps below.
The Host Name, is the host name of the IHS server.
4. click Next
5. On the next screen (select a template) accept the default and click Next
6. On the Create new Web Server definition, verify that the Web server port is correct, (80) and CHANGE the IHS installation directory to the actual installation directory and also CHANGE the plugin location to your actual plugin location.
Verify this information on your IHS server. If this information is different on your IHS server, then enter in the data that matches your IHS server.
IHS: C:\Program Files\IBM\HTTPServer
Plugins: C:\IBM\WebSphere\Plugins
Username: wasadmin (This would be a user you would create if you were using the admin control center for IHS. (This is a simple installation and we will not be needing this. You must enter a username and password, but the actual values you enter are not important for this configuration.)
Password: wasadmin (the associated password)
7. Confirm your settings and Click Next when you are finished.
8. Click Save to the master configuration.
9. When it is done saving, you should see a green arrow (If your IHS server is running)
1. Select the check box next to your server name and then click "*Generate Plugin*"
2. You should get a message that says the plugin has been created.
It will actually create the plugin-cfg.xml file in a subdirectory (multiple sub directories) of the WebSphere installation.
Make note of the path location (You need to copy the entire directory that the plugin-cfg.xml is in.)
In this example, the clmserver directory that hosts the plugin-cfg.xml file also contains a keystore and stash file that IHS can use to
communicate with the application server.
Best practices for the certificates is to use a separate keystore (kdb file) for the plugin and the IHS server (we discussed this in the first section)
3. If you look in the clmserver directory, you can see the plugin-cfg.xml file and the keystore / stash files as well as a few other files.
You will be copying this entire directory over to your IHS server and place it into the directory location noted section above.
4. Copy the "clmserver" directory noted in the path and carry it over to your Web Server (IHS). If the plugin location noted in the earlier steps above is: Plugins: C:\IBM\WebSphere\Plugins then you should see a config directory under the Plugins directory. This is where you want to put the copied plugin directory.
You will now go back to the Web Server (IHS) machine.
If your IHS server is collocated with your Web Server, you can propagate the plugin. However, if you propagate the plugin, it will only copy the plugin-cfg.xml file; it will NOT copy the keystore/certificate files that you will need. You will have to manually copy these over.
LoadModule was_ap22_module "C:\IBM\WebSphere\Plugins\bin\32bits\mod_was_ap22_http.dll" WebSpherePluginConfig "C:\IBM\WebSphere\Plugins\config\clmserver\plugin-cfg.xml "
<Property Name="keyring" Value="C:\IBM\WebSphere\Plugins\config\clmserver\plugin-key.kdb"/> <Property Name="stashfile" Value="C:\IBM\WebSphere\Plugins\config\clmserver\plugin-key.sth"/>
1. Open a Web Browser and go to: https://your application server:port/snoop (you may get a request for a login. This is good.)
Example: https://myclmserver:9443/snoop
Notice, we included the port number configured for WAS
If you get an error, you may not have installed the default application in WebSphere. If you did not install the default application, then just test your CLM application /jts/admin (if this is your jts server)
regardless of the error, it is outside of the Web Server, we are trying to get directly to your Application server.
2. If you find success, then go to: https://your IHS server/snoop (This assumes you have configured your IHS server to listen on ports 80 and 443) (You should get the same result as in step 1)
Here, we did not include a port number. We are using the proxy.
3. You can now test your CLM Application(s)
LoadModule was_ap22_module "C:\IBM\WebSphere\Plugins\bin\32bits\mod_was_ap22_http.dll" WebSpherePluginConfig "C:\IBM\WebSphere\Plugins\config\merged_plugins\plugin-cfg.xml "
usage: pluginCfgMerge.bat path-to-plugin-1 path-to-plugin-2 path-to-plugin-3 path-to-merged-plugin example: pluginCfgMerge.bat C:\IBM\WebSphere\Plugins\config\jtswebserver\plugin-cfg.xml C:\IBM\WebSphere\Plugins\config\rtcwebserver\plugin-cfg.xml C:\IBM\WebSphere\Plugins\config\rqmwebserver\plugin-cfg.xml C:\IBM\WebSphere\Plugins\config\merged_plugins\plugin-cfg.xml
Status icon key: