Overview
CreditNexus supports SSL/TLS encryption for PostgreSQL database connections to ensure secure data transmission. The implementation includes:- Automatic certificate generation - Self-signed certificates for development
- Manual certificate configuration - Production certificates from your CA
- Multiple SSL modes - From basic encryption to full certificate verification
- Health monitoring - SSL connection status endpoint
Quick Start
Development (Automatic Setup)
For development, SSL can be automatically configured with zero setup:Production (Manual Setup)
For production, use certificates from your Certificate Authority:SSL Modes
CreditNexus supports all PostgreSQL SSL modes:| Mode | Description | Security | Use Case |
|---|---|---|---|
disable | No SSL | ❌ None | Development only |
allow | Try SSL, fallback | ⚠️ Low | Not recommended |
prefer | Prefer SSL, fallback | ⚠️ Low | Migration |
require | Require SSL, no cert verification | ⚠️ Medium | Internal networks |
verify-ca | Require SSL, verify CA | ✅ High | Production |
verify-full | Require SSL, verify CA and hostname | ✅ Highest | Production (recommended) |
verify-full for production environments.
Configuration Options
Basic SSL Configuration
Automatic Certificate Generation
Mutual TLS (Client Certificates)
For enhanced security, configure mutual TLS:Setup Steps
Step 1: Obtain Certificates
Option A: Automatic Generation (Development)
- Set
DB_SSL_AUTO_GENERATE=truein your.envfile - Start the application - certificates will be generated automatically
- Certificates are stored in
./ssl_certs/db/by default
Option B: Manual Setup (Production)
- Obtain CA certificate from your database administrator
- Store certificate in secure location (e.g.,
/etc/ssl/certs/) - Set
DB_SSL_CA_CERTto certificate path - Ensure proper file permissions:
Step 2: Configure Environment Variables
Create or update your.env file:
Step 3: Validate Configuration
The application validates SSL configuration at startup. If validation fails, the application will not start. You can also validate manually:Step 4: Verify SSL Connection
Check SSL status using the health endpoint:PostgreSQL Server Configuration
Ensure your PostgreSQL server has SSL enabled:postgresql.conf
pg_hba.conf
Certificate Management
Auto-Generated Certificates
Auto-generated certificates are stored in./ssl_certs/db/ by default:
ca.crt- CA certificateserver.crt- Server certificateserver.key- Server private keyclient.crt- Client certificate (if mutual TLS enabled)client.key- Client private key (if mutual TLS enabled)
Certificate Rotation
- Obtain new certificates from your CA
- Update
DB_SSL_CA_CERTenvironment variable - Restart the application
- Verify SSL connection using health endpoint
- Remove old certificates after verification
Certificate Expiration
The application checks certificate expiration. Certificates are valid for 365 days by default (configurable viaDB_SSL_AUTO_CERT_VALIDITY_DAYS).
Monitor certificate expiration:
Environment-Specific Configuration
Development
Staging
Production
Troubleshooting
Common Issues
-
SSL connection failed
- Verify PostgreSQL server has SSL enabled
- Check certificate paths are correct
- Ensure certificates have proper permissions
-
Certificate verification failed
- Verify CA certificate matches server certificate
- Check certificate expiration
- Ensure certificate chain is complete
-
Connection timeout
- Check network connectivity
- Verify firewall allows SSL connections
- Check PostgreSQL SSL port (usually 5432)
Security Best Practices
- Always use SSL in production - Set
DB_SSL_REQUIRED=true - Use verify-full mode - Highest security level
- Validate certificates - Never skip certificate validation
- Secure certificate storage - Restrict file permissions (600 for keys, 644 for certs)
- Monitor SSL connections - Use health endpoint to monitor status
- Rotate certificates - Before expiration
- Use strong TLS versions - TLS 1.2 minimum, TLS 1.3 preferred
- Disable weak ciphers - Use strong cipher suites only
Compliance
SSL/TLS encryption for database connections is required for:- GDPR - Article 32 (Security of processing)
- DORA - Article 8 (ICT risk management)
- PCI-DSS - Requirement 4 (Encrypt transmission)