Moving a site to HTTPS should improve security and trust, not create a launch-day cleanup project. This guide gives you a reusable checklist for setting up HTTPS on a custom domain with minimal surprises, whether you are pointing a new domain at a hosted app, migrating an existing site from HTTP, or replacing infrastructure during a deployment. It focuses on the operational details that usually cause trouble: DNS timing, certificate issuance, redirects, mixed content, cookies, proxies, and post-launch checks.
Overview
If you only remember one thing, remember this: HTTPS is not a single switch. It is a chain of dependencies across DNS, hosting, certificates, application settings, and browser behavior. When one link is missing, users may see certificate warnings, redirect loops, broken assets, failed logins, or an app that works for some visitors but not others.
A clean HTTPS setup usually follows this order:
- Decide which hostnames will be served, such as
example.comandwww.example.com. - Point DNS records to the correct platform or server.
- Wait for DNS to propagate enough for certificate validation to succeed.
- Issue or enable an SSL certificate for every hostname you intend to serve.
- Verify that the application, reverse proxy, or platform knows how to serve HTTPS traffic.
- Redirect HTTP to HTTPS with a single, predictable redirect path.
- Fix mixed content so every page asset loads over HTTPS.
- Check cookies, API endpoints, webhooks, and third-party integrations.
- Monitor the site after launch.
If your DNS setup still feels fuzzy, it helps to review the basics before touching certificates or redirects. A separate guide on how to connect a domain to your web app with DNS records explained simply is a useful companion to this checklist.
There are also two broad infrastructure patterns to keep in mind:
- Managed platforms, where your hosting provider issues and renews certificates for you after DNS is configured correctly.
- Self-managed servers, where you or your team handle web server configuration, certificate issuance, and renewal workflows directly.
The steps below work for both. The difference is who performs each task.
Checklist by scenario
Use the scenario that matches your current state, then adapt the details to your hosting stack.
Scenario 1: Brand new site on a custom domain
This is the cleanest case because you are not migrating existing traffic yet.
- Choose a canonical hostname. Decide whether the main public URL should be
https://example.comorhttps://www.example.com. Both can work, but choose one as primary. - Create DNS records carefully. Add the records required by your host. That might mean an
Arecord,AAAArecord,CNAME, or a combination. Avoid adding duplicate or conflicting records for the same hostname. - Lower expectations about timing. DNS changes can take time to propagate depending on prior TTL values and caching. Do not assume a certificate will be available instantly after changing DNS.
- Enable certificate provisioning. If your platform offers automatic SSL certificate website support, confirm that the correct domains are listed in the project settings.
- Verify hostname coverage. If you want both apex and
wwwto work, ensure both are included in the certificate scope and app routing. - Test HTTPS before announcing the site. Visit both the canonical domain and alternate domain variants. Confirm the browser shows a valid certificate and the expected redirect behavior.
- Turn on HTTP-to-HTTPS redirect. Only do this after HTTPS works reliably. Redirecting too early can make debugging harder.
- Check non-page assets. Make sure images, stylesheets, scripts, fonts, and API calls all load over HTTPS.
Scenario 2: Existing site migrating from HTTP to HTTPS
This is the case where teams are most likely to break something, because old absolute URLs, legacy integrations, and browser caches start to matter.
- Inventory every public hostname. Include the primary domain,
wwwsubdomain, app subdomains, image hosts, API hosts, and any vanity domains still receiving traffic. - Issue certificates before redirecting traffic. Do not force HTTPS until each public hostname can serve a valid certificate.
- Update application-level URLs. Change hardcoded
http://asset links, API endpoints, canonical tags, sitemap URLs, open graph URLs, and any environment variables used for absolute links. - Review external services. Payment providers, OAuth callbacks, webhook targets, headless CMS previews, and analytics settings may all store a full callback or origin URL.
- Enable a single redirect rule. The normal pattern is
http://*tohttps://*, plus a second rule that redirects the non-canonical hostname to the canonical one. Keep the path and query string intact. - Check sessions and cookies. If your app uses secure cookies, verify they are still sent correctly after the move. If cookies were configured in a way that assumed HTTP, authentication may appear to fail randomly.
- Scan for mixed content. Even one old script or stylesheet served over HTTP can break key functionality.
- Watch logs immediately after cutover. Look for 301 loops, certificate validation errors, blocked assets, and failed API requests.
Scenario 3: Hosted app behind a CDN, reverse proxy, or load balancer
This is common in cloud deployment setups where TLS may terminate before traffic reaches the application.
- Know where TLS terminates. It may terminate at the CDN, load balancer, ingress controller, or origin server. That affects headers, redirects, and application behavior.
- Forward protocol information correctly. Your application should be able to trust headers such as
X-Forwarded-Protoor equivalent in your stack so it knows the original request was HTTPS. - Avoid redirect loops. A common mistake is when the proxy serves HTTPS to users but the origin app thinks the request is HTTP and keeps redirecting back to HTTPS.
- Make origin expectations explicit. Some setups use HTTPS between proxy and origin; others use HTTP internally. Either can work if it is configured intentionally.
- Confirm cache behavior. If the CDN caches redirects or headers, purge or invalidate as needed after changing HTTPS settings.
- Test uploads, APIs, and websockets. Websocket upgrades and large request paths sometimes reveal proxy misconfiguration that normal page tests miss.
Scenario 4: Self-managed server using Nginx, Apache, or a similar web server
With a self-managed stack, a few extra checks are worth doing before you change public traffic.
- Verify ports 80 and 443 are reachable. Firewalls, cloud security groups, and host-based rules should allow certificate validation and HTTPS traffic.
- Install the certificate and private key correctly. Use the right file paths and permissions, and avoid mixing production and staging files.
- Configure the full certificate chain if required. Incomplete chain configuration can cause browser trust issues even when the leaf certificate looks valid.
- Create separate server blocks or virtual hosts thoughtfully. Make sure each hostname resolves to the intended site and does not fall back to a default server with the wrong certificate.
- Set redirect behavior at one layer. If possible, centralize redirects in the web server rather than splitting them between application code and proxy rules.
- Automate renewal. Renewal matters as much as initial issuance. Test the renewal path before you need it.
If you are still choosing where to host the project, compare deployment tradeoffs first. A practical starting point is best web app hosting platforms for small projects and side hustles or, for static sites, how to deploy a static website to Cloudflare Pages, Netlify, and Vercel.
What to double-check
This is the section to revisit right before launch or migration. Most HTTPS issues come from a small set of overlooked details.
1. DNS matches the intended destination
Confirm that each hostname points where you think it points. An old A record, stale CNAME, or duplicate record can send certificate validation to the wrong place. If you recently changed providers, make sure old DNS entries from the previous setup have been removed where appropriate.
2. The certificate covers every hostname in use
A certificate for www.example.com does not automatically mean example.com is covered, and the reverse is also true. Include every hostname that users, bots, APIs, and redirects might hit. This includes alternate domains that only exist to redirect.
3. Redirect logic is simple
You usually want two outcomes:
- Any HTTP request becomes HTTPS.
- Any non-canonical hostname redirects to the canonical hostname.
Avoid long chains such as HTTP to non-canonical HTTPS to canonical HTTPS to another app route. Fewer hops make troubleshooting easier and reduce the chance of loops.
4. Mixed content is actually fixed, not just partially improved
When teams search for how to fix mixed content HTTPS issues, they often patch only the visible warnings. Go deeper. Check:
- Theme or template files with absolute asset URLs
- JavaScript config files
- Markdown or CMS content with embedded media
- Third-party scripts and tag manager snippets
- CSS files referencing background images or fonts
- API clients that still call
http://endpoints
Modern browsers may block active mixed content entirely, which means a page can load while key features fail silently.
5. Application trust proxy settings are correct
If your app is behind a proxy, load balancer, or CDN, confirm it recognizes forwarded HTTPS requests correctly. Frameworks often need an explicit trust proxy setting to interpret the request scheme and generate secure URLs properly.
6. Cookies and auth flows still work
Secure cookie settings are desirable, but a migration can expose hidden assumptions. Test login, logout, password reset, session persistence, admin areas, and any third-party identity provider callback paths. If these break, users often experience it as a generic sign-in problem rather than an obvious HTTPS error.
7. Health checks and uptime monitoring use the right URL
Update monitoring endpoints and synthetic checks to the canonical HTTPS URL. This is a good time to review monitoring coverage more generally with website uptime monitoring tools compared for developers and small teams.
8. API consumers and webhook senders know about the new scheme
If external systems call your application, update callback targets and webhook URLs. If your app calls external services, confirm their endpoints are already HTTPS and trusted in your environment.
Common mistakes
The safest HTTPS rollout is often less about advanced security knowledge and more about avoiding familiar operational errors.
Enabling redirects before HTTPS works
This is one of the most common causes of confusing outages. If users are forced to HTTPS before the certificate is valid or before the host is serving on port 443 correctly, the site can become inaccessible.
Forgetting alternate hostnames
Teams often test the main domain and forget www, staging aliases, old campaign domains, or app subdomains. A launch may look complete until a search result, bookmark, or shared link hits an uncovered hostname.
Assuming the platform fixed mixed content automatically
Managed hosting can automate certificates, but it usually cannot rewrite every absolute URL in your application code, CMS content, API configuration, or uploaded content.
Creating conflicting redirects at multiple layers
A CDN rule, load balancer rule, web server rule, and app-level middleware can all try to solve the same problem differently. That is how loops happen. Pick one primary layer for redirects where possible and keep the rest minimal.
Ignoring certificate renewal operations
Initial setup is only half the job. If your certificate or domain validation path depends on DNS records, accessible ports, or automation jobs, changes later can break renewal quietly.
Not testing from a clean session
Browser caches, HSTS history, and saved redirects can hide issues during testing. Use a private window, multiple devices, and fresh DNS lookups where possible.
Overlooking infrastructure migrations
A site can work perfectly today and fail during a hosting move because certificates, origin settings, or proxy headers were tied to the old environment. If you are planning broader workflow changes, pairing this checklist with your deployment process is worthwhile.
When to revisit
HTTPS is not a one-time task. Revisit this checklist whenever any of the underlying inputs change.
- Before a launch or relaunch: new domains, new subdomains, new redirects, or a redesigned app can all introduce mixed content and hostname gaps.
- Before moving hosts or CDNs: TLS termination points, certificate automation, and DNS targets often change during migrations.
- Before changing DNS providers or nameservers: even a correct certificate setup can fail if validation records or routing records are altered unexpectedly.
- When adding third-party integrations: new auth flows, payment callbacks, or embedded assets may reintroduce HTTP links.
- When certificate renewal workflows change: new automation, platform switches, or firewall updates can affect future renewals.
- During seasonal planning or release reviews: this is a good operational checkpoint, especially for teams that batch infrastructure work.
For a practical repeatable process, keep a short pre-launch runbook:
- List all public hostnames.
- Verify DNS records.
- Verify certificate coverage.
- Test HTTPS on every hostname.
- Enable redirects only after validation.
- Scan for mixed content and broken assets.
- Test login, forms, APIs, and webhook flows.
- Update monitoring and alerts.
- Watch logs after release.
That short list is enough to prevent most avoidable HTTPS incidents. The point is not to make the process heavy. It is to make it repeatable.
If your team handles several deployment tasks at once, it also helps to keep related operational docs nearby, such as local development environment checklist for new web projects and best API testing tools for frontend and backend developers. HTTPS problems are often easiest to solve when domain, deployment, and request testing are treated as one workflow rather than separate chores.
Use this guide before launches, renewals, migrations, and platform changes. If the domain changes, the host changes, or the traffic path changes, revisit the checklist before users do the testing for you.