Let's Encrypt
Get free SSL certificates with Let's Encrypt integration.
Supascale integrates with Let's Encrypt for free, automated SSL certificates.
Prerequisites
- Domain bound to your project
- DNS pointing to your server
- Port 80 accessible (for HTTP-01 challenge)
Obtain Certificate via Web UI
- Click on a project with a domain configured
- Go to Certificate tab
- Click Obtain Let's Encrypt Certificate
- Enter your email address
- Select challenge type
- Click Obtain Certificate
Obtain Certificate via API
curl -X POST https://supascale.example.com/api/v1/projects/my-project/certificate/obtain \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"email": "admin@example.com",
"challengeType": "http-01",
"autoRenew": true
}'
Response:
{
"success": true,
"certificate": {
"domain": "api.example.com",
"issuedAt": "2026-01-19T12:00:00Z",
"expiresAt": "2026-04-19T12:00:00Z",
"issuer": "Let's Encrypt",
"autoRenew": true
}
}
Challenge Types
HTTP-01 (Default)
The simplest method - Let's Encrypt verifies domain ownership via HTTP.
Requirements:
- Port 80 accessible from internet
- No special DNS configuration
Process:
- Let's Encrypt requests
http://yourdomain/.well-known/acme-challenge/token - Supascale responds with validation
- Certificate issued
{
"challengeType": "http-01"
}
DNS-01
Verify domain ownership via DNS TXT records. Supports wildcards.
Requirements:
- Access to DNS provider API
- DNS provider credentials
Supported DNS Providers:
| Provider | Configuration |
|---|---|
| Cloudflare | API Token |
| AWS Route 53 | Access Key + Secret |
| DigitalOcean | API Token |
| GoDaddy | API Key + Secret |
| Google Cloud DNS | Service Account JSON |
Example with Cloudflare:
{
"challengeType": "dns-01",
"dnsProvider": "cloudflare",
"dnsCredentials": {
"apiToken": "your-cloudflare-api-token"
}
}
Example with AWS Route 53:
{
"challengeType": "dns-01",
"dnsProvider": "aws",
"dnsCredentials": {
"accessKeyId": "AKIAXXXXXXXX",
"secretAccessKey": "your-secret-key",
"region": "us-east-1"
}
}
Certificate Options
Key Type
| Type | Security | Compatibility |
|---|---|---|
| RSA | Good | Universal |
| EC (ECDSA) | Better | Modern browsers |
{
"keyType": "ec"
}
Key Size (RSA only)
| Size | Security | Performance |
|---|---|---|
| 2048 | Standard | Fast |
| 4096 | High | Slower |
{
"keyType": "rsa",
"keySize": 4096
}
Staging Mode
Test certificate issuance without rate limits:
{
"staging": true
}
Staging certificates are not trusted by browsers. Only use for testing.
Auto-Renewal
Enable automatic certificate renewal:
{
"autoRenew": true
}
Supascale checks certificates daily and renews when:
- Less than 30 days until expiration
- Auto-renew is enabled
Manual Renewal
Via Web UI
- Go to project Certificate tab
- Click Renew Certificate
- Wait for confirmation
Via API
curl -X POST https://supascale.example.com/api/v1/projects/my-project/certificate/renew \ -H "X-API-Key: your-api-key"
Check Certificate Status
Via API
curl https://supascale.example.com/api/v1/projects/my-project/certificate/status \ -H "X-API-Key: your-api-key"
Response:
{
"status": "valid",
"domain": "api.example.com",
"expiresAt": "2026-04-19T12:00:00Z",
"daysUntilExpiry": 90,
"autoRenew": true,
"lastRenewAttempt": null
}
Revoke Certificate
If your private key is compromised:
curl -X POST https://supascale.example.com/api/v1/projects/my-project/certificate/revoke \ -H "X-API-Key: your-api-key"
Revoked certificates cannot be un-revoked. You'll need to obtain a new certificate.
Rate Limits
Let's Encrypt has rate limits:
| Limit | Value |
|---|---|
| Certificates per domain | 50/week |
| Failed validations | 5/hour |
| Duplicate certificates | 5/week |
Use staging mode for testing to avoid hitting limits.
Troubleshooting
HTTP-01 Challenge Failed
- Verify port 80 is accessible:
curl http://yourdomain.com - Check firewall allows port 80
- Verify web server is running
- Check domain DNS is correct
DNS-01 Challenge Failed
- Verify DNS credentials are correct
- Check DNS API permissions
- Wait for DNS propagation (may take minutes)
- Verify TXT record is created
Certificate Not Trusted
- Ensure using production (not staging)
- Verify full certificate chain is installed
- Check certificate matches domain
Auto-Renewal Failed
- Check certificate status for error message
- Verify challenge method still works
- Check DNS credentials haven't expired
- Review Supascale logs