Skip to content

How to Migrate from HTTP to HTTPS

TL;DR:

HTTP to HTTPS migration: (1) get SSL certificate via certbot (free); (2) configure nginx/Apache for HTTPS + TLS 1.2/1.3; (3) add 301 redirect from all http:// to https://; (4) fix Mixed Content (replace http links with https); (5) enable HSTS + submit to hstspreload.org.

Check your site's SSL →

Step-by-step guide

  1. Get SSL certificate. sudo certbot --nginx -d example.com -d www.example.com. Free from Let's Encrypt.
  2. Configure HTTPS in web server. nginx: 443 server block with ssl_certificate + ssl_protocols TLSv1.2 TLSv1.3;
  3. 301 redirect from HTTP to HTTPS. Separate 80 server block: return 301 https://$host$request_uri;
  4. Fix Mixed Content. Replace all http:// links with https:// or // (protocol-relative). Check via /en/mixed-content.
  5. Update canonical and sitemap. In sitemap.xml and <link rel="canonical"> — only https URLs.
  6. Enable HSTS. add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
  7. Submit to hstspreload.org. To be added to Chrome's preload list. Protection against downgrade on first visit.
  8. Google Search Console. Add the HTTPS version as a separate property. Confirm 301 redirects from HTTP.

Open tool →

Understanding SSL/TLS Certificates

Before migrating your site from HTTP to HTTPS, it's crucial to understand SSL/TLS certificates. These certificates encrypt the data between the user's browser and your web server, ensuring secure transmission of sensitive information.

To obtain an SSL certificate, you can use certbot, which automates the process for you. Below are the steps to acquire and install a free SSL certificate using certbot:

  • Install Certbot: Depending on your operating system, you can install certbot with the following commands:
  • sudo apt-get install certbot python3-certbot-nginx or sudo apt-get install certbot python3-certbot-apache

After installing certbot, you can obtain your SSL certificate:

sudo certbot --nginx or sudo certbot --apache

Follow the prompts to set up your certificate. Certbot will automatically configure your web server to use HTTPS, but it's essential to review and adjust the configurations if necessary.

Testing HTTPS Configuration

Once you've migrated your site to HTTPS, testing your configuration is essential to ensure everything is functioning correctly. You can utilize various tools and commands to check the security of your HTTPS setup.

One effective method is using the SSL Labs SSL Test. This online tool analyzes your SSL configuration and provides a grade based on various factors, including certificate validity, protocol support, and security vulnerabilities. Simply visit SSL Labs SSL Test and enter your domain name to get started.

Another useful command-line tool is curl. You can test your HTTPS configuration by running:

curl -I https://yourdomain.com

This command returns the HTTP headers, allowing you to check if your server properly responds to HTTPS requests and if the correct headers are being sent. Look for the HTTP/2 200 or HTTP/1.1 200 OK response.

Additionally, ensure that your site is not serving mixed content by using the browser's developer tools. Check the console for any mixed content warnings, which indicate that some resources are still being loaded over HTTP.

Updating Internal Links and Resources

After migrating to HTTPS, it's important to update all internal links and resources on your site to ensure a seamless user experience. Failing to do so can lead to mixed content issues, where secure and non-secure content is served together.

Start by scanning your website for any remaining HTTP links. You can use tools like grep in the command line to find links in your HTML files:

grep -r 'http://' /path/to/your/site

This command will list all instances of HTTP links. Once identified, you can replace them with HTTPS links. If your site uses a Content Management System (CMS) like WordPress, you can utilize plugins like Better Search Replace to automate this process.

Additionally, check your database for any stored URLs that may still point to HTTP. For example, in WordPress, you can run the following SQL query to update your site URL:

UPDATE wp_options SET option_value = replace(option_value, 'http://yourdomain.com', 'https://yourdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl';

After updating your internal links, clear your browser cache and test your site thoroughly to ensure all resources load securely via HTTPS.

CertificateExpiry, issuer, domains (SAN)
ChainIntermediate and root CA validation
TLS ProtocolTLS version and cipher suite
VulnerabilitiesHeartbleed, POODLE, weak ciphers

Why teams trust us

TLS 1.3
supported
Full
CA chain check
<2s
result
30/14/7
days-to-expiry alerts

How it works

1

Enter domain

2

TLS chain verified

3

Expiry date & vulnerabilities

What Does the SSL Check Cover?

SSL/TLS is the encryption protocol that protects data between the browser and server. Our tool analyzes the certificate, chain of trust, TLS version, and knownvulnerabilities.

Certificate Details

Issuer, validity period, signature algorithm, covered domains (SAN), and validation type (DV/OV/EV).

Chain of Trust

Full chain verification: from leaf certificate through intermediates to root CA.

TLS Analysis

Protocol version (TLS 1.2/1.3), cipher suites, Perfect Forward Secrecy (PFS) support.

Expiry Alerts

Set up a monitor — get Telegram and email alerts 30/14/7 days before expiration.

DV vs OV vs EV Certificates

DV (Domain Validation)
  • Confirms domain ownership only
  • Issued in minutes automatically
  • Free via Let's Encrypt
  • Suitable for most websites
  • Most common certificate type
OV / EV
  • Organization (OV) or Extended Validation (EV)
  • Issued in 1-5 business days
  • Costs $50 to $500/year
  • For finance, e-commerce, government sites
  • Increases user trust

Who uses this

DevOps

SSL certificate monitoring

Security

TLS config audit

SEO

HTTPS as ranking factor

E-commerce

customer trust

Common Mistakes

Expired certificateBrowsers block sites with expired SSL. Set up auto-renewal or monitoring.
Incomplete certificate chainWithout intermediate CA, some browsers and bots cannot verify the certificate.
Mixed content on HTTPS siteHTTP resources on an HTTPS page — the browser lock icon disappears, reducing trust.
Using TLS 1.0/1.1Legacy TLS versions have known vulnerabilities. Use TLS 1.2+ or 1.3.
Domain mismatch in certificateThe certificate must cover all site domains, including www and subdomains.

Best Practices

Set up auto-renewalLet's Encrypt + certbot with cron — certificate renews automatically every 60-90 days.
Enable HSTSStrict-Transport-Security header forces browsers to always use HTTPS.
Use TLS 1.3TLS 1.3 is faster (1-RTT handshake) and safer — legacy ciphers removed.
Monitor expiration datesCreate a monitor on Enterno.io — get notified well before expiration.
Verify chain after renewalAfter certificate renewal, confirm that intermediate certificates are installed.

Get more with a free account

SSL certificate monitoring, check history and alerts 30 days before expiry.

Sign up free

Learn more

Frequently Asked Questions

Signup required?

No for quick check. For continuous monitoring — free account.

Try the live tool that powered this guide

Free plan — 10 monitors, checks every 5 min, no card required. Upgrade for 1-minute interval and multi-region monitoring.