Configuring HTTPS (Linux w/ Docker)
We strongly recommend serving Informer over HTTPS. As of Informer 5.0.13, HTTPS is applied through the Informer Load Balancer, which avoids the performance degradation of the older method. Set up the Load Balancer first, then follow this article.
These steps are for Informer 2025.2 and later. For 2025.1 and earlier, contact Support for the archived procedure.
Why HTTPS matters
A lot of potentially sensitive information flows between users' browsers and the Informer server. HTTPS protects it with:
- End-to-end encryption: data between Informer and users' machines is encrypted, so even on a compromised network an attacker cannot read it.
- Host validation: the client validates the certificate the server presents, so as long as users go to the correct address and see the HTTPS lock indicator, an attacker cannot impersonate Informer.
Prerequisites
- Informer 5.0.13 or higher.
- An X.509 SSL certificate in PEM format for the server (wildcard certificates are fine) and the matching private key in unencrypted PEM format.
- Alternatively, an encrypted PFX file containing both the certificate and private key, plus the PFX passphrase.
Configure HTTPS
-
Stop the Docker containers:
docker-compose stop -
Set up the Load Balancer if it is not already configured.
-
Edit
docker-compose.ymland make sure the load balancer has a volume pointing to where the certificate will live. The directory names do not have to match this example:i5-load-balancer:image: docker.entrinsik.com:5000/i5-load-balancerworking_dir: /i5-load-balancerports:- "80:80"- "443:443"volumes:- ./config.json:/i5-load-balancer/config.json- ./ssl/certs:/i5-load-balancer/etc -
Edit
config.jsonand add atlssection. The path is the directory inside the container (here/i5-load-balancer/etc, matching the volume above), not the host path. The extension does not have to be.pem.For a certificate/key pair:
"tls": {"cert": "/i5-load-balancer/etc/cert.pem","key": "/i5-load-balancer/etc/key.pem"},"http": 80,"https": 443,For a PFX file with a passphrase:
"tls": {"pfx": "/i5-load-balancer/etc/cert.pfx","passphrase": "YourPassphraseGoesHere"},"http": 80,"https": 443,A completed
config.jsonlooks similar to this (the rules may differ based on your load-balancer configuration):{"tls": {"pfx": "/i5-load-balancer/etc/cert.pfx","passphrase": "YourPassphraseGoesHere"},"http": 80,"https": 443,"host": "informer5.myServer.com","loadBalancer": {"rules": [{ "regex": ".*\\/jobs\\/[^\\/]*$", "url": "http://informer-schedules" },{ "regex": ".*_(query|run|refresh)+", "url": "http://informer-query" },{ "regex": "$", "url": "http://informer" }]}} -
If you are adding HTTPS after Informer was first started, delete the existing Informer and load-balancer containers so the
docker-compose.ymlchanges take effect (the names may differ from your local file):docker-compose rm informer-apidocker-compose rm informer-querydocker-compose rm informer-schedulesdocker-compose rm i5-load-balancer -
Start the containers:
docker-compose up -d
Informer should now be reachable over HTTPS.
Self-signed certificates
For a certificate/key pair, only the server certificate is in the trust chain by default. To add the root and intermediate certificates:
- Obtain the X.509 raw base-64 version of the root and intermediate certificates.
- Open the certificate files.
- Copy their full contents, omitting any whitespace.
- Concatenate them onto the server certificate Informer uses for TLS.
- Save the combined file containing the server, root, and intermediate certificates.
- Stop and restart Informer to pick up the change.
Verify the full trust chain by browsing to Informer and inspecting the site certificate (the padlock in the address bar).
Optional hardening
You can add security headers to Informer's config.json under the ./modules/deployer plugin to harden browser access.
HTTP Strict Transport Security (HSTS) tells browsers to always use HTTPS for Informer and to upgrade any HTTP attempt automatically:
"plugins": {
"./modules/deployer": {
"headers": {
"Strict-Transport-Security": "max-age=31536000"
}
}
}
Preventing clickjacking stops Informer from being framed by another site. Replace <InformerURL> with your Informer access URL, for example https://myInformer.com:
"plugins": {
"./modules/deployer": {
"headers": {
"x-frame-options": "sameorigin",
"content-security-policy": "frame-ancestors 'self' <InformerURL>"
}
}
}