Default TLS Certificate
By default, all domain names (ending in
scalingo.io) are protected by a wildcard certificate issued by Gandi. This
certificate is managed by the platform. It automatically allows any application
hosted on Scalingo to be reached via both http and https as soon as they
are created.
When adding a custom domain name, Scalingo automatically leverage Let’s Encrypt to generate a dedicated TLS certificate.
Once issued, a Let’s Encrypt certificate is given a 90 days validity period. The platform ensures all certificates are renewed when necessary. This process is fully automated and integrated, so you don’t have to worry about it.
The platform also follows Let’s Encrypt best practices by starting the renewal process when a certificate is 60 days old. If the renewal process fails, the platform automatically retries later. The delay between each attempt is determined using an exponential backoff algorithm. This algorithm is capped to a minimum of one attempt per day.
Certificate Statuses
At Scalingo, a Let’s Encrypt certificate can have one of these statuses:
- Pending DNS
- When you link a domain name to your application, we wait for it to target our infrastructure before generating the certificate. We check the DNS record automatically every 60 seconds.
- Creating
- Our infrastructure is exchanging messages with Let’s Encrypt servers to generate your certificate.
- In use
- Your website is available using HTTPS connections thanks to a Let’s Encrypt certificate.
- Not used
- Your website is available using HTTPS connections thanks to a custom certificate.
- Action required
- To achieve the creation of your Let’s Encrypt certificate for a wildcard domain, please follow these additional instructions.
Technical Considerations
- The platform is limited by official Let’s Encrypt
quotas to a maximum of 50 generated certificates per
apex domain per week. Generating a certificate for
www.example.com,app.example.com, andexample.comwithin the same week would count as 3.
Using a Wildcard Domain
When the platform generates a Let’s Encrypt certificate for a wildcard
domain, an additional TXT DNS record must be added to the corresponding
zone file. This TXT RR allows the platform to verify you are indeed owning
the domain name.
This mandatory action is highlighted by the “Action required” status shown on
the dashboard. Clicking on the question mark gives you the instructions and the
value of the TXT record to create.
Here is an example of such a TXT RR:
NAME TTL TYPE VALUE
_acme-challenge.example.com 120 TXT 5TWm4V7xoUpGax-58FrPO49
This TXT record must be updated every three months for the platform to be
able to renew the certificate.
This renewal process can be done manually, or it can be automated when working with several registrars. We currently support Azure DNS, Cloudflare, dnsimple, Gandi, Google Cloud DNS, GoDaddy, OVH Cloud, and AWS Route 53.
To allow us do the work for you, you’ll have to create a few environment variables.
Azure DNS
The following environment variables must be created and properly filled:
| Environment Variable | Description |
|---|---|
DNS_PROVIDER |
Must be set to azure
|
DNS_AZURE_CLIENT_ID |
Your Azure client ID |
DNS_AZURE_CLIENT_SECRET |
Your Azure client secret |
DNS_AZURE_SUBSCRIPTION_ID |
Your Azure subscription ID |
DNS_AZURE_TENANT_ID |
Your Azure tenant ID |
DNS_AZURE_RESOURCE_GROUP |
Your Azure resource group |
For more information about Azure DNS, see their documentation.
Cloudflare
The following environment variables must be created and properly filled:
| Environment Variable | Description |
|---|---|
DNS_PROVIDER |
Must be set to cloudflare
|
DNS_CLOUDFLARE_EMAIL |
Your Cloudlflare e-mail address |
DNS_CLOUDFLARE_API_KEY |
Your Cloudlfare global API key |
For more information about Cloudflare, see their documentation.
dnsimple
The following environment variables must be created and properly filled:
| Environment Variable | Description |
|---|---|
DNS_PROVIDER |
Must be set to dnsimple
|
DNS_DNSIMPLE_OAUTH_TOKEN |
Your dnsimple OAuth token |
For more information about dnsimple, see theirdocumentation.
Gandi
Gandi
The following environment variables must be created and properly filled:
| Environment Variable | Description |
|---|---|
DNS_PROVIDER |
Must be set to gandi
|
DNS_GANDI_API_KEY |
Your Gandi API key |
For more information about Gandi, see their documentation.
Gandiv5
The following environment variables must be created and properly filled:
| Environment Variable | Description |
|---|---|
DNS_PROVIDER |
Must be set to gandiv5
|
DNS_GANDIV5_API_KEY |
Your Gandi v5 API key |
For more information about Gandi v5, see their documentation.
Google Cloud DNS
The following environment variables must be created and properly filled:
| Environment Variable | Description |
|---|---|
DNS_PROVIDER |
Must be set to gcloud
|
DNS_GCLOUD_JSON_KEYS |
Your Service account file, encoded in base64 |
The Service account file must be encoded in base64:
base64 --wrap=0 service_account_file.json
For more information about Google Cloud DNS, see their documentation.
GoDaddy
The following environment variables must be created and properly filled:
| Environment Variable | Description |
|---|---|
DNS_PROVIDER |
Must be set to godaddy
|
DNS_GODADDY_API_KEY |
Your GoDaddy API key |
DNS_GODADDY_API_SECRET |
Your GoDaddy API secret |
For more information about GoDaddy, see their documentation.
OVH Cloud
The following environment variables must be created and properly filled:
| Environment Variable | Description |
|---|---|
DNS_PROVIDER |
Must be set to ovh
|
DNS_OVH_ENDPOINT |
Either ovh-eu or ovh-ca
|
DNS_OVH_APPLICATION_KEY |
Your OVH application key |
DNS_OVH_APPLICATION_SECRET |
Your OVH application secret |
DNS_OVH_CONSUMER_KEY |
Your OVH consumer key |
For more information about OVH Cloud, see their [documentation][ovh-doc].
AWS Route 53
The following environment variables must be created and properly filled:
| Environment Variable | Description |
|---|---|
DNS_PROVIDER |
Must be set to route53
|
DNS_AWS_ACCESS_KEY_ID |
Your AWS access key ID |
DNS_AWS_SECRET_ACCESS_KEY |
Your AWS secret access key |
DNS_AWS_HOSTED_ZONE_ID |
Your AWS hosted zone ID |
For more information about AWS Route 53, see their documentation.
Disabling Let’s Encrypt
Our Let’s Encrypt features can be completely disabled.
Using the Command Line
- Make sure you have correctly setup the Scalingo command line tool
- Issue the following command to add the domain name to your app, and specify
you don’t want any of the Let’s Encrypt features:
scalingo --app my-app domains-add --no-letsencrypt example.com
Using the Terraform Provider
- Make sure the
letsencrypt_enabledattribute of the correspondingscalingo_domainresource block is set tofalse:resource "scalingo_domain" "example.com" { common_name = "example.com" app = "${scalingo_app.my-app.id}" letsencrypt_enabled = false }