(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.