SSL Certificates
Configure SSL/TLS certificates for secure HTTPS connections.
Supascale supports automatic SSL certificate management via Let's Encrypt and custom certificate uploads. This guide covers certificate configuration for securing your Supabase projects.
Why SSL?
SSL/TLS certificates provide:
- Encryption: Data in transit is encrypted
- Authentication: Verifies your server's identity
- Trust: Browsers show the secure padlock icon
- Compliance: Required for many regulations (GDPR, PCI-DSS)
Let's Encrypt Integration
Overview
Let's Encrypt provides free, automated SSL certificates. Supascale handles:
- Certificate issuance
- Automatic renewal (before expiration)
- Configuration updates
Challenge Types
Let's Encrypt verifies domain ownership through challenges:
| Challenge | How It Works | Best For |
|---|---|---|
| HTTP-01 | Places a file on your web server | Single domains, simple setup |
| DNS-01 | Creates a DNS TXT record | Wildcards, internal servers |
HTTP-01 Challenge
Requirements:
- Domain points to your server
- Port 80 is accessible from the internet
- Firewall allows Let's Encrypt validation
DNS-01 Challenge
Supported DNS providers:
- Cloudflare
- AWS Route53
- DigitalOcean
- GoDaddy
- Google Cloud DNS
Requires API credentials for your DNS provider.
Obtaining a Certificate
- Go to your project's Settings > SSL
- Click Obtain Certificate
- Enter your domain name(s)
- Select the challenge type
- For DNS-01, enter your DNS provider credentials
- Click Issue Certificate
The process typically takes 1-2 minutes.
Custom Certificates
When to Use Custom Certificates
- Wildcard certificates from other providers
- Extended Validation (EV) certificates
- Organization Validation (OV) certificates
- Internal CA certificates
Certificate Requirements
Your certificate must include:
| File | Format | Description |
|---|---|---|
| Certificate | PEM | Your SSL certificate |
| Private Key | PEM | RSA or ECDSA private key |
| Chain (optional) | PEM | Intermediate certificates |
Uploading a Certificate
- Go to Settings > SSL
- Click Upload Certificate
- Upload or paste:
- Certificate file
- Private key file
- Intermediate chain (if applicable)
- Click Validate
- If valid, click Save
Validation Checks
Supascale validates:
- Certificate and key match
- Certificate is not expired
- Certificate chain is valid
- Domain matches the certificate
Key Types
Supascale supports both key types:
| Type | Key Size | Performance | Compatibility |
|---|---|---|---|
| RSA | 2048-4096 bits | Slower | Universal |
| ECDSA | 256-384 bits | Faster | Modern browsers |
ECDSA is recommended for new certificates (faster, more secure with shorter keys).
Certificate Management
Viewing Certificate Status
- Go to Settings > SSL
- View:
- Current certificate details
- Expiration date
- Issuer
- Domain coverage
Renewal
Let's Encrypt certificates:
- Automatically renewed before expiration
- Supascale checks daily and renews when <30 days remaining
Custom certificates:
- Manual renewal required
- Upload the new certificate when ready
- Supascale alerts you before expiration
Revocation
If your private key is compromised:
- Go to Settings > SSL
- Click Revoke Certificate
- Confirm the revocation
- Issue a new certificate
Private Key Security
Private keys are protected:
- Encrypted with AES-256 before storage
- Stored as
privkey.pem.enc - Decrypted only when needed
- Never exposed in the UI or API
Troubleshooting
Let's Encrypt Validation Fails
HTTP-01 issues:
- Verify port 80 is open
- Check domain DNS points to your server
- Ensure firewall allows Let's Encrypt IPs
DNS-01 issues:
- Verify API credentials are correct
- Check DNS provider permissions
- Allow time for DNS propagation (up to 5 minutes)
Certificate Not Working
- Verify the certificate is properly installed
- Check the private key matches the certificate
- Ensure the full chain is included
- Verify the domain matches
Expiration Warnings
If you receive expiration warnings:
- For Let's Encrypt: Check automatic renewal is working
- For custom: Upload the renewed certificate
- Verify certificate files are not corrupted
Best Practices
- Use Let's Encrypt when possible: Free, automatic, and secure
- Enable auto-renewal: Don't let certificates expire
- Monitor expiration: Set calendar reminders as backup
- Use strong keys: RSA 2048+ or ECDSA 256+
- Protect private keys: Never share or commit to version control
- Test after changes: Verify HTTPS works after certificate updates