Skip to main content
This guide covers SSL/TLS setup for FreeTAKServer, including certificate generation, configuration, and deployment for secure client connections.

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
The SSL implementation uses:
  • 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

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:
This generates:
  • CA certificate
  • Server certificate
  • Default client certificate
  • Connection data package

Certificate Revocation

Revoke compromised or expired client certificates:
After revoking certificates:
  1. The CRL is automatically updated
  2. Restart FreeTAKServer to load new CRL
  3. Revoked clients will be denied connection
  4. Generate new certificates for affected users

SSL Service Configuration

The SSL CoT Service is configured in MainConfig.py:

Data Package Generation

Standard ATAK/ITAK Package

Package contents:

WinTAK Package

WinTAK requires nested data package structure:
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
Error: Certificate verification failed
  • Cause: Client doesn’t trust CA
  • Solution: Ensure client data package includes CA certificate
Error: Wrong password
  • Cause: Certificate password mismatch
  • Solution: Verify FTS_CLIENT_CERT_PASSWORD matches generation password

Verify Certificate Validity

Certificate Permissions

Ensure proper file permissions:

Debug SSL Service

Enable detailed SSL logging:
Monitor SSL service logs:

Security Best Practices

Production SSL recommendations:
  1. Strong Passwords: Use complex passwords for certificate protection
  2. Certificate Expiry: Set reasonable expiry times
    • CA: 5-10 years
    • Server: 2-3 years
    • Client: 1 year
  3. Key Protection: Secure private keys
    • Never commit to version control
    • Use file permissions (600 for .key files)
    • Store backups encrypted
  4. Regular Rotation: Implement certificate rotation schedule
    • Revoke old certificates before expiry
    • Generate and distribute new certificates
    • Update CRL regularly
  5. Backup Certificates: Securely backup CA and server certificates

Next Steps