Overview
FreeTAKServer uses SSL/TLS to:- Encrypt CoT data traffic between clients and server
- Authenticate clients using X.509 certificates
- Secure data package transfers
- Protect API communications
- Port 8089: SSL CoT Service (default)
- Port 8443: HTTPS Data Package Service
- OpenSSL: Certificate generation and management
- Python pyOpenSSL: SSL socket handling
Certificate Architecture
FreeTAKServer uses a certificate hierarchy:Quick Start
from FreeTAKServer.core.util.certificate_generation import AtakOfTheCerts
with AtakOfTheCerts(pwd="your_secure_password") as cert_generator:
cert_generator.generate_ca()
/opt/fts/certs/ca.pem - CA certificate/opt/fts/certs/ca.key - CA private key/opt/fts/certs/FTS_CRL.json - Certificate Revocation Listwith AtakOfTheCerts(pwd="your_secure_password") as cert_generator:
cert_generator.bake("server", cert="server")
/opt/fts/certs/server.pem - Server certificate/opt/fts/certs/server.key - Server private key/opt/fts/certs/server.key.unencrypted - Unencrypted key for service/opt/fts/certs/server.p12 - PKCS12 bundle for clientswith AtakOfTheCerts(pwd="your_secure_password") as cert_generator:
cert_generator.bake("client_username", cert="user")
Advanced Certificate Management
Custom Certificate Parameters
Generate certificates with custom expiry and parameters:Certificate Properties
Generated certificates include:Automated Certificate Generation
Generate all necessary certificates for a deployment:- CA certificate
- Server certificate
- Default client certificate
- Connection data package
Certificate Revocation
Revoke compromised or expired client certificates:SSL Service Configuration
The SSL CoT Service is configured in MainConfig.py:Data Package Generation
Standard ATAK/ITAK Package
WinTAK Package
WinTAK requires nested data package structure:Data Package Preferences
The generated.pref file configures client connection:
Docker SSL Configuration
Using Docker Volumes for Certificates
Generate Certificates in Docker
Troubleshooting
SSL Connection Failures
Common SSL errors and solutions:Error:
SSL handshake failed- Cause: Certificate mismatch or expired
- Solution: Regenerate certificates, verify expiry dates
Certificate verification failed- Cause: Client doesn’t trust CA
- Solution: Ensure client data package includes CA certificate
Wrong password- Cause: Certificate password mismatch
- Solution: Verify
FTS_CLIENT_CERT_PASSWORDmatches generation password
Verify Certificate Validity
Certificate Permissions
Ensure proper file permissions:Debug SSL Service
Enable detailed SSL logging:Security Best Practices
Next Steps
- Connect Clients with generated certificates
- Configure Federation for server-to-server SSL
- Set up Data Packages over HTTPS