6.10 Enabling SSL (HTTPS) for OpenMetadata (OM)
To secure OM using HTTPS, follow the steps below:
- Navigate to
<OM-INSTALL-DIR>/openmetadata-1.3.0/confand run the following command to generate a Java Keystore (.jks) file containing a self-signed certificate with a Subject Alternative Name (SAN):keytool -ext SAN=IP:<IP> -keystore <keystore-name>.keystore.jks \ -alias <alias> -keyalg RSA -keysize 2048 \ -sigalg SHA256withRSA -genkey -validity 365Example:
keytool -ext SAN=IP:100.76.147.137 -keystore openmetadata.keystore.jks \ -alias om_als -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -genkey -validity 365You will be prompted to enter certificate details. Provide the values as shown below:
Enter keystore password: password123 Re-enter new password: password123 What is your first and last name? [Unknown]: 100.76.147.137 What is the name of your organizational unit? [Unknown]: OFSS What is the name of your organization? [Unknown]: ORACLE What is the name of your City or Locality? [Unknown]: BLR What is the name of your State or Province? [Unknown]: KA What is the two-letter country code for this unit? [Unknown]: IN Is CN=100.76.147.137, OU=OFSS, O=ORACLE, L=BLR, ST=KA, C=IN correct? [no]: yesNote:
Upon confirmation, the system generates the following:- A 2048-bit RSA key pair
- A self-signed certificate signed with the SHA256withRSA algorithm
- A certificate valid for 365 days
- The certificate and key stored in the
openmetadata.keystore.jksfile
- Place the
openmetadata.keystore.jksfile in<OM-INSTALL-DIR>/openmetadata-1.3.0/conf directory. - Run the following command to export the certificate from the generated keystore:
keytool -exportcert -keystore <keystore-name>.keystore.jks \ -alias <alias> -file <certificate-name>.cerExample:
keytool -exportcert -keystore openmetadata.keystore.jks \ -alias om_als -file om.cerNote:
When prompted, enter the keystore password.- When prompted, enter the keystore password. For example, password123.
- The certificate will be exported to the specified
.cerfile (for example,om.cer).
- Import the previously generated certificate (om.cer) into the Java truststore (cacerts) used by both OM and EST
- On the OM Application Server, enter the following:
keytool -import -file "/scratch/openmetadata-ins-dir/openmetadata-1.3.0/conf/om.cer" \ -alias om_als \ -keystore "/scratch/openmetadata-ins-dir/jdk-17.0.2/lib/security/cacerts" \ -storepass "changeit"- On the EST Application Server, enter the following:
Ykeytool -import -file "/scratch/ofsaadb/om.cer" \ -alias om_als \ -keystore "/scratch/ofsaadb/jdk-17.0.11/lib/security/cacerts" \ -storepass "changeit"Note:
ou may also use the -cacertsoption instead of specifying the full path to cacerts, if the environment variableJAVA_HOMEis properly set.Sample Output:
Owner: CN=100.76.147.137, OU=OFSS, O=ORACLE, L=BLR, ST=KA, C=IN Issuer: CN=100.76.147.137, OU=OFSS, O=ORACLE, L=BLR, ST=KA, C=IN Serial number: e58456bf07531203 Valid from: Wed Apr 09 13:59:55 GMT 2025 until: Thu Apr 09 13:59:55 GMT 2026 Certificate fingerprints: SHA1: 33:13:B1:23:E3:6D:3D:5F:84:80:C8:5A:E4:43:F8:21:B3:23:DD:3B SHA256: 60:D7:4B:83:14:2A:A2:0B:73:F0:21:6A:48:63:B1:85:AD:D8:1A:AC:BE:C6:A6:68:07:C1:1B:B4:BA:26:93:2F Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3Extensions:
#1: ObjectId: 2.5.29.17 Criticality=false SubjectAlternativeName [ IPAddress: 100.76.147.137 ] #2: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: EC 79 1A 05 2B CC BE B6 66 4C C3 D9 82 F8 C0 1C 0010: FA 2B 99 DD ] ]When prompted, enter the following:
Trust this certificate? [no]: yes Certificate was added to keystore
- In the
application.ymlfile, locate theapplicationConnectorssection and comment out the existing HTTP connector to disable unencrypted access:#- type: http # port: ${SERVER_PORT:-8585}Note:
This ensures the application no longer accepts HTTP connections on port 8585, enforcing secure HTTPS access only. - Add the following configuration under the applicationConnectors section of the application.yml file to enable HTTPS:
- type: https port: ${SERVER_PORT:-8585} keyStorePath: ./conf/openmetadata.keystore.jks keyStorePassword: password123 keyStoreType: JKS certAlias: <certificate-alias> supportedProtocols: [TLSv1.2, TLSv1.3] excludedProtocols: [SSL, SSLv2, SSLv2Hello, SSLv3]Note:
- Replace
<certificate-alias>with the alias used during keystore generation (e.g., om_als). TLSv1.5is not a valid protocol version; the latest supported by most Java environments isTLSv1.3.- Ensure indentation is consistent to avoid YAML parsing errors.
- Replace
- Update the configuration file (such as application.yml or .env, depending on your environment) to ensure all callback and public key URLs use the HTTPS protocol:
callbackUrl: ${AUTHENTICATION_CALLBACK_URL:-"https://100.76.147.137:8585/callback"} publicKeyUrls: - "https://idcs-e1cc81fab76840ff92e07aa94c413b76.identity.pint.oc9qadev.com:443/admin/v1/SigningCert/jwk" - "https://100.76.147.137:8585/api/v1/system/config/jwks" - Update all configured requests in IDCS to use the https protocol.
- Modify the OM URL in the EST configuration to use
https, and restart the EST services for the changes to take effect.