(Awaiting Approval) Advanced: Handling Self-Signed Certificates (On-Premise Exchange)

If your On-Premise Microsoft Exchange server uses a self-signed SSL certificate (or a corporate CA), the Docker container will reject the connection for security reasons. You must manually inject your certificate into the container's trusted root store.

To do this without modifying the base files provided by Sendent, you can create a docker-compose.override.yml file.

Step 1. Prepare your certificate

Ensure your certificate is in .crt or .pem format (e.g., your-ca.crt).

Step 2. Place the certificate

Create a dedicated folder on your host machine to store the certificate. For example, create a folder named certs next to your deployment files and place your-ca.crt inside it.

Step 3. Create the override file

In the same directory as your main docker-compose.yml, create a new empty file named docker-compose.override.yml and paste the following configuration:

For single-instance architecture
version: '3.4'
 
services:
primary.sendent.synchronization.service:
volumes:
- ./certs:/app/certs
entrypoint: >
/bin/sh -c "cp '/app/certs/your-ca.crt' /usr/local/share/ca-certificates/ && update-ca-certificates && dotnet Sendent.Synchronisation.Service.dll"
For multi-instance architecture
version: '3.4'
 
services:
primary.sendent.synchronization.service:
volumes:
- ./certs:/app/certs
entrypoint: >
/bin/sh -c "cp '/app/certs/your-ca.crt' /usr/local/share/ca-certificates/ && update-ca-certificates && dotnet Sendent.Synchronisation.Service.dll"
 
secondary.sendent.synchronization.service:
volumes:
- ./certs:/app/certs
entrypoint: >
/bin/sh -c "cp '/app/certs/your-ca.crt' /usr/local/share/ca-certificates/ && update-ca-certificates && dotnet Sendent.Synchronisation.Service.dll"

Note: Filename Matching

Ensure you replace your-ca.crt in the entrypoint script with the exact filename of your actual certificate.

Step 4. Start the application

After you’ve created docker-compose.override.yml, this file must be explicitly specified when running the docker compose command.

Example command for single-instance architecture:

docker compose -f docker-compose.yml -f docker-compose.override.yml

Example command for multi-instance architecture:

docker compose -f docker-compose.yml -f docker-compose.multiinstances.yml -f docker-compose.override.yml

The order of files is important: the main file (docker-compose.yml) must be listed first, followed by any override files. This is required because later files override the configuration defined in the earlier ones.


Was this article helpful?