Enable HTTPS, configure HTTP and HTTPS ports and redirect HTTP requests to HTTPS
Enabling SSL
cd {RHYTHMYX_HOME}\jetty\
StartJetty.bat --add-to-start=ssl,https
cd {RHYTHMYX_HOME}\jetty\
StartJetty.sh --add-to-start=ssl,https
[root@rhythmyx jetty]# ./StartJetty.sh --add-to-start=ssl,https
Found Jetty service rxjetty in /etc/default/rxjetty pointing to jetty base /opt/Rhythmyx/jetty/base
This instance is currently installed as service rxjetty
/var/run/rxjetty/rxjetty
INFO : https initialized in ${jetty.base}/start.d/https.ini
INFO : ssl initialized in ${jetty.base}/start.d/ssl.ini
COPY : ${jetty.home}/modules/ssl/keystore to ${jetty.base}/etc/keystore
INFO : Base directory was modified
For example if keystoreFile="AppServer/server/rx/conf/identity.jks" , move:
- AppServer/server/rx/conf/identity.jks
- jetty/base/etc/
openssl pkcs12 -export -chain -in /path/to/cert/my.crt -inkey /path/to/key/my.key.pem -out keystore.p12 -name training.percussion.com -CAfile /path/to/bundle/bundle.crt
cd <InstallDir>/JRE/bin
keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 -destkeystore keystore.jks
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12".
jetty.sslContext.keyStorePath=etc/keystore
jetty.sslContext.trustStorePath=etc/keystore
jetty.sslContext.keyStorePassword=percussion
jetty.sslContext.trustStorePassword=percussion
jetty.sslContext.keyManagerPassword=percussion
For Linux server users the /jetty/base/etc/installation.properties file may be edited directly. A reference configuration is provided below.
installation.properties |
---|
jetty.sslContext.keyStorePassword=percussion jetty.ssl.port= 9543 jetty.sslContext.trustStorePassword=percussion jetty.sslContext.keyManagerPassword=percussion perc.ssl.protocols=TLSv1. 2 jetty.http.port= 9892 perc.ssl.includeCiphers=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 jetty.sslContext.keyStorePath=etc/keystore jetty.sslContext.trustStorePath=etc/keystore |
In the example configuration above, we have defined a default set of secure ciphers, and by default Jetty will only enable the TLSv1.2 protocol. These ciphers work well with all modern browsers, however these ciphers may not work for connections from some older browsers. If you need to support specific ciphers or SSL protocols for older browsers or client tools, you can enable them by changing the SSL protocols property in installation.properties (perc.ssl.protocols and perc.ssl.includeCiphers).
Once the installation.properties are configured, the Jetty service may be restarted and Rhythmyx should now be accessible via HTTPS on the configured jetty.ssl.port.
Disabling HTTPS after it is enabled
- {Rhythmyx_home}/jetty/base/start.d/ssl.ini
- {Rhythmyx_home}/jetty/base/start.d/https.ini
- {Rhythmyx_home}/jetty/base/start.d/perc-ssl.ini (if it exists)
The next startup will have Rhythmyx running in HTTP.
Redirecting HTTP requests to HTTPS
For Rhythmyx Content Explorer, DCE, and all tools:
Update <Rhythmyx_Home>/rxconfig/Server/server.properties to include
requireHTTPS=true
For Rhythmyx landing page: Update/Add <Rhythmyx_Home>\jetty\base\webapps\root\WEB-INF\web.xml file with below listed section before </web-app>
end node:
<security-constraint>
<web-resource-collection>
<web-resource-name>Root</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
A restart of the service is required after making these changes.