SSL certificate management
HTTPS certificates in GOCO follow two paths depending on how a site is deployed: managed-hosting sites are fully automatic (the platform issues and renews; you only complete the DNS setup), while your own servers are configured on the console’s SSL Certificates page — powered by acme.sh, issuing, deploying and renewing automatically with free CAs such as Let’s Encrypt, so it’s completely free.
Which scenario are you in?
Section titled “Which scenario are you in?”| Deployment | Who manages certificates | What you do |
|---|---|---|
| GOCO managed hosting | The platform issues and auto-renews | Add the DNS records shown, then zero maintenance |
| Your own server (SSH + BT-Panel) | An acme.sh config on the SSL Certificates page | Create one certificate config per server and enable auto-renew |
Managed hosting: automatic issuance & renewal
Section titled “Managed hosting: automatic issuance & renewal”Managed-hosting sites never need a manual certificate request. When you bind a domain, the platform registers a managed hostname for it and prepares issuance; you only add the records shown at your DNS provider (routing CNAME, certificate DCV CNAME, ownership TXT). Once they propagate, the certificate is issued automatically. Full DNS steps are in the managed-hosting tutorial’s “Method 5” section.
Renewal is just as automatic: the _acme-challenge CNAME used for certificate validation is a one-time delegation — keep it after issuance, and the platform re-issues a fresh certificate before expiry with no action from you. If a removed DNS record ever blocks renewal, you’re alerted automatically (the Sites list’s SSL column shows “Cert error”).
Domain status meanings
Section titled “Domain status meanings”The site detail’s “Domains needing DNS setup” section shows each domain’s live status:
| Status | Meaning | What to do |
|---|---|---|
| Awaiting DNS | Domain created, but the routing record hasn’t propagated yet | Add the routing CNAME and wait for propagation |
| Issuing certificate | DNS is live; the HTTPS certificate is being issued | Confirm the certificate DCV CNAME is added, then wait |
| Active | DNS and certificate are both ready; the site serves HTTPS | Nothing |
| Error | Issuance or validation failed | Fix the DNS records per the troubleshooting below, then click “Check status” |
| Suspended | The domain has been suspended | Contact support for details |
Your own server: acme.sh automatic certificates
Section titled “Your own server: acme.sh automatic certificates”Certificates for your own servers live on the console’s SSL Certificates page: they’re issued and renewed on BT-Panel servers over SSH via acme.sh, auto-renewing before expiry and deploying to the matching sites. Each server can have only one certificate config.
-
New certificate
Section titled “New certificate”On the SSL Certificates page click “New certificate” and pick a server (name optional — left blank it’s auto-named). If you haven’t bound a server yet, start with Server binding & management.
-
Pick a CA and challenge
Section titled “Pick a CA and challenge”- CA: Let’s Encrypt (90-day · free · most widely trusted), ZeroSSL (90-day · free), BuyPass (180-day · free, fewer renewals).
- Challenge: the default is HTTP-01 (webroot) — needs port 80 reachable, issues per domain. DNS-01 (CloudFlare) validates through your bound CloudFlare token — no port 80 needed, and it enables wildcard certs. If no token is bound yet, bind one on the DNS page first.
-
Choose which domains it covers
Section titled “Choose which domains it covers”Prefer “All domains on this server”: every site hosted on the server gets a certificate, and new sites are auto-included and issued within ~24h. “Specific domains” is deprecated.
-
Enable auto-renew
Section titled “Enable auto-renew”With Auto-renew on, the system renews and deploys before expiry: set how many days early to renew and the daily check window (prefer “Random (00:00–06:00 Beijing · recommended)” to spread load and reduce the chance of CA rate limiting). Optionally turn on Force HTTPS to redirect HTTP → HTTPS on issue/renew.
-
First issuance
Section titled “First issuance”Click “Issue / renew”, tick the domains to process in the picker (domains with no cert / expired / expiring are pre-selected) and confirm. Each domain deploys as soon as its certificate is issued; still-valid certificates are skipped automatically.
Certificate config status meanings
Section titled “Certificate config status meanings”The Status column on the SSL Certificates list:
| Status | Meaning |
|---|---|
| Idle | Config created but never issued — open it and click “Issue / renew” to deploy |
| Issuing | Requesting / renewing domain by domain |
| Deployed | Certificates issued and deployed to the sites |
| Expiring | Some domain’s certificate is close to expiry (handled automatically when auto-renew is on) |
| Expired | Some domain’s certificate has expired — renew soon |
| Failed | The last run failed for some domains — click “Retry renewal”; details in the “Last error” column |
Troubleshooting failed issuance / renewal
Section titled “Troubleshooting failed issuance / renewal”Managed hosting: stuck on “Awaiting DNS”
Section titled “Managed hosting: stuck on “Awaiting DNS””- Confirm the routing CNAME (
@→ the record value shown in the console, e.g.tw1.goco.ccper shard, possibly in agoco-host.comform) exists at your DNS provider — without it the domain can’t open at all. - DNS propagation usually takes minutes to hours; afterwards click “Check status” in the site detail.
- For domains on Cloudflare, make sure the routing CNAME is a grey cloud (DNS only) — the orange proxy must be off.
- If an ownership TXT (
_cf-custom-hostname) is requested, add it as well.
Managed hosting: stuck on “Issuing certificate” (DCV stuck)
Section titled “Managed hosting: stuck on “Issuing certificate” (DCV stuck)”- Check the certificate DCV CNAME is added with the complete value: host
_acme-challenge, value like<domain>.<delegation-tag>.dcv.cloudflare.com— a partially copied value keeps it stuck forever. - Mind the host notation: most DNS providers expect the relative form
_acme-challenge— don’t append the domain again (unless your provider requires full hostnames). - After adding the record, wait for propagation and click “Check status”. This record is a one-time delegation — keep it after issuance; renewals reuse it.
Managed hosting: apex is Active but www doesn’t open
Section titled “Managed hosting: apex is Active but www doesn’t open”www is a separate managed hostname with its own certificate and needs its own DNS record: tick “Also bind www” when binding the domain, then add the CNAME shown on the www row of the site detail’s “Domains needing DNS setup”. The apex being “Active” doesn’t make www active — each validates on its own.
Your own server: issuance failed
Section titled “Your own server: issuance failed”- The domain doesn’t resolve to this server’s IP — HTTP-01 issuance will fail (the domain list flags these directly). Point the domain’s A record at the server first, then retry.
- Port 80 unreachable: HTTP-01 requires port 80; if you can’t open it, switch to the DNS-01 challenge.
- DNS-01 without a token: if you see “No CloudFlare token bound”, bind one on the DNS page first, or switch back to HTTP-01.
- CA rate limits: mass issuance in a short window (especially with “Force re-issue”) consumes CA quota — wait and use “Retry renewal”; the random renewal window lowers the chance of hitting limits.
- For the exact error, check the list’s “Last error” column and the editor’s Run history tab — each run shows issued / still-valid / failed per domain.
