Offer Free .in, .co.in or .com domain for year one with web or WordPress hosting on a 12-month+ term, plus free migration. See the offer
Security & SSL

Install free SSL in cPanel and force HTTPS

Every domain on our cPanel hosting gets a free certificate from AutoSSL. This guide gets it issued, sends every visitor to the https:// address and clears the mixed-content warnings that keep the padlock from appearing. The one thing to know first: AutoSSL can only issue once your domain points to our server.

  • Updated
  • 7 min read
  • Level Beginner

Before you start

  • Your domain points to VirtualCloud, by nameservers or an A record. If it doesn't yet, follow Point your domain to VirtualCloud first.
  • Your cPanel login, or open cPanel straight from the client area.
  • For WordPress: an administrator login and a recent backup, because one step changes the site address.
Hands-on timeAbout 5 minutes
Certificate issuedMinutes when you run it; within a day on its own

Step 1: Check SSL/TLS Status and run AutoSSL

AutoSSL runs once a day on its own: it requests, installs and renews a certificate for every name in your account that points to the server. You only need to confirm it worked, or nudge it right after changing DNS.

  1. Open SSL/TLS Status

    Go to cPanelSecuritySSL/TLS Status. Every name in your account is listed, including the service subdomains cPanel creates for you (mail., webmail., cpanel. and others).

    cPanel›Security›SSL/TLS Status
    SSL/TLS StatusAutoSSL is on
    DomainExpiresCertificate status
    yourdomain.in12 May 2027AutoSSL Domain Validated
    www.yourdomain.in12 May 2027AutoSSL Domain Validated
    shop.yourdomain.in—Self-signed: not trusted
    mail.yourdomain.in12 May 2027AutoSSL Domain Validated
    Run AutoSSLExclude Domains from AutoSSL
    Example. A green "Domain Validated" status means that name is covered. Here, a new subdomain is still on a self-signed certificate.
  2. Click Run AutoSSL

    Use this if a name shows no certificate, a self-signed one or an error, or if you've only just pointed the domain at us. The check takes a minute or two for a small account. Leave the page open, then reload it when it finishes.

  3. Read the result for each name

    Green means issued and installed. If a name still fails, expand its status to see why; usually that name doesn't resolve to our server yet. The next section covers every requirement.

    Don't need a name covered? Untick it and click Exclude Domains from AutoSSL. This is useful for a subdomain whose DNS lives elsewhere, which would otherwise show a failed check every day.

What AutoSSL needs before it can issue

The certificate authority must be able to confirm the domain is yours. It does that by fetching a small file from the website (HTTP validation) or reading a DNS record (DNS validation, when your nameservers are ours). Each item below breaks that check; during a free migration from your old host, the first one applies until DNS is switched.

RequirementHow to checkFix
The name resolves to our serverThe DNS lookup tool shows your cPanel IP for both yourdomain.in and wwwAdd or correct the A record (or CNAME for www)
CAA records allow the issuerdig CAA returns nothing, or includes the issuing CAAdd a CAA issue record for the CA, or remove the old CAA set
Validation file is reachable/.well-known/ isn't blocked, redirected away or behind a loginExclude /.well-known/ from custom redirects and security rules
No proxy in front during first issueCloudflare shows a grey cloud, not orangePause the proxy until issued, then use Full (strict)

From a terminal, the same checks take ten seconds:

# Both names must return your server's IP
dig +short A yourdomain.in @1.1.1.1
dig +short A www.yourdomain.in @1.1.1.1

# Empty output is fine. If records come back, the issuing CA must be listed
dig +short CAA yourdomain.in

If you do publish CAA records, for example because a security audit asked for them, they must name every authority that issues for you, or AutoSSL is refused. AutoSSL uses Let's Encrypt or Sectigo depending on the server, so listing both is the safe choice:

yourdomain.in.  3600  IN  CAA  0 issue "letsencrypt.org"
yourdomain.in.  3600  IN  CAA  0 issue "sectigo.com"

Step 2: Send every visitor to HTTPS

A certificate only protects visitors who arrive on https://. Old links, bookmarks and people typing the bare domain still land on http:// until you add a permanent (301) redirect. Use one of these two methods, not both.

A. The cPanel toggle

Quickest, and right for most sites. Go to cPanelDomainsDomains and switch on Force HTTPS Redirect for each domain. The toggle only becomes available once a valid certificate covers that domain.

B. An .htaccess rule

Use this when you also want a single canonical address (with or without www), or your site's own rules need to run in a set order. Edit .htaccess in the site's folder with cPanelFilesFile Manager.

cPanel›Domains›Domains
DomainForce HTTPSDocument root
yourdomain.inOn/public_html
shop.yourdomain.inOff/shop.yourdomain.in
Example. Turn the redirect on per domain; subdomains have their own switch.

For option B, put this block at the very top of .htaccess, above any # BEGIN WordPress section. It leaves /.well-known/ alone, so renewals keep validating:

# Redirect all HTTP traffic to HTTPS (301)
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well-known/
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Want one canonical address as well? This version sends http://, http://www. and https://www. straight to https://yourdomain.in in a single hop. Use it in place of the block above, not alongside it:

# HTTPS and no-www in one redirect
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well-known/
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

Step 3: Switch WordPress to its https:// address

WordPress stores its own address and builds every link from it, so a redirect alone leaves it generating http:// links. Change the address once, then update the links already saved in your posts.

  1. Change both addresses in Settings

    In WordPressSettingsGeneral, change WordPress Address (URL) and Site Address (URL) to https://yourdomain.in and save. You'll be logged out once; log back in on the new address. If both fields are greyed out, they're fixed in wp-config.php. Edit them there instead:

    define( 'WP_HOME', 'https://yourdomain.in' );
    define( 'WP_SITEURL', 'https://yourdomain.in' );
  2. Update links stored in your content

    Images and internal links in older posts still contain http://. With SSH access, WP-CLI rewrites them safely, including inside serialised data. Run it from the site's folder and check the dry run first:

    # Preview: shows how many replacements each table would get
    wp search-replace 'http://yourdomain.in' 'https://yourdomain.in' \
      --skip-columns=guid --dry-run
    # Apply, then clear caches
    wp search-replace 'http://yourdomain.in' 'https://yourdomain.in' \
      --skip-columns=guid
    wp cache flush

    No SSH? A search-and-replace plugin does the same job from wp-admin. Never run a plain SQL REPLACE on WordPress tables, because it corrupts serialised settings.

  3. Purge the page cache

    Cached pages still hold the old links. In LiteSpeed CacheToolboxPurge, click Purge All, then load the site in a private window.

Clear mixed-content warnings

If the page loads over HTTPS but the padlock is missing or crossed out, something on the page is still requested over http://: an image, a font, a script or a stylesheet. Browsers block insecure scripts outright and flag the rest.

  1. Find the culprits

    Open the page, press F12 (or Cmd + Option + I on a Mac) and look in the Console tab for lines starting with Mixed Content. Each line names the exact URL.

  2. Fix them where they live

    Usual hiding places are theme options (logo and background images), custom HTML or footer widgets, hard-coded URLs in a child theme's CSS, and third-party embed codes copied years ago. Change each one to https://. If the third party doesn't offer HTTPS, replace the embed.

  3. Use a safety net while you clean up

    This header asks browsers to upgrade any leftover http:// requests on your pages. Add it to .htaccess. It hides the symptom, so still fix the source URLs:

    <IfModule mod_headers.c>
    Header always set Content-Security-Policy "upgrade-insecure-requests"
    </IfModule>

How you know you're done. http://yourdomain.in lands on https:// with one redirect, the padlock shows on your home page, a post with images and your checkout or contact page, and the Console has no Mixed Content lines.

Renewals, and when a paid certificate makes sense

Public certificates are getting shorter by industry rule (CA/Browser Forum ballot SC-081): at most 200 days from 15 March 2026, 100 days from March 2027 and 47 days from March 2029. With AutoSSL that changes nothing for you. It checks daily and renews well before expiry, as long as the domain keeps pointing to our server and nothing blocks /.well-known/.

The free certificate encrypts traffic exactly as well as a paid one. Pay only when you need something AutoSSL doesn't give you:

You needFree AutoSSLPaid option (per year, + GST)
HTTPS for sites hosted with usYes, every domain and subdomainNot needed
One certificate for any subdomain, including future onesIssued per name, once each resolvesDV Wildcard, ₹6,499
Your company name verified in the certificateNo, domain onlyOV ₹4,999 · EV ₹12,999
A certificate for another server, app or load balancerNo, it stays on our serversDV from ₹799

Paid certificates are bought as 1–3 year subscriptions with free reissues during the term. See SSL certificates for what each type covers.

AutoSSL troubleshooting

AutoSSL covers my domain but not www (or mail)

That name has no DNS record pointing to us. Add an A record for www (or a CNAME to yourdomain.in), and an A record for mail if you use our email. Wait for the record to show in the DNS lookup tool, then click Run AutoSSL again.

The browser says "too many redirects"

Two rules are sending visitors in a loop. The classic cause is Cloudflare's Flexible SSL mode: it talks to our server over HTTP, our server redirects to HTTPS, and round it goes. Set Cloudflare's SSL/TLS mode to Full (strict). Otherwise, check for both the cPanel toggle and an .htaccess rule, or a redirect plugin, and keep only one.

The padlock shows on the home page but not on some posts

Those pages have mixed content: usually an image inserted with a full http:// address, or an old embed. Run the WP-CLI search-replace from Step 3, purge the cache and check the Console again.

An expired certificate is still being served

A manually installed certificate, often a paid one from a previous host, can stay attached to the domain. Open cPanelSecuritySSL/TLSManage SSL sites, uninstall the expired certificate, then run AutoSSL. If you're moving a still-valid paid certificate, our team can install it for you.

AutoSSL fails with a CAA error

Your domain publishes CAA records that don't list the issuing authority. Add the two issue records shown under requirements at whichever DNS provider hosts your zone, or remove CAA records you no longer need. DNS records explained covers where each record lives.

Was this guide helpful?Your answer stays in this browser; nothing is sent unless you write to us below.

Related guides

All 16 guides

Still stuck? Ask an engineer.

Tickets and email are answered 24/7 in English and Hindi. Tell us the domain and paste the exact message from SSL/TLS Status, and we'll take it from there.