Free certificates, AutoSSL and installing your own certificate.
Contents
- Why you need SSL
- Benefits of HTTPS
- Types of SSL certificate
- By level of validation
- By domain coverage
- Let's Encrypt (free SSL)
- Installing Let's Encrypt SSL
- What AutoSSL covers
- Checking AutoSSL status
- Automatic renewal
- Fixing AutoSSL problems
- Installing your own SSL certificate
- Getting an SSL certificate
- Generating a CSR in cPanel
- Installing an SSL certificate
- Automatic installation (AutoSSL)
- Managing SSL certificates
- Viewing installed certificates
- Certificate details
- Removing an SSL certificate
- Redirecting HTTP to HTTPS
- Method 1: .htaccess (recommended)
- Method 2: Using Redirects
- Method 3: WordPress
- Checking your SSL configuration
- Online tools
- Checking in a browser
- Checking from the command line
- Fixing mixed content
- Types of mixed content
- Finding mixed content
- Fixing it
- Wildcard SSL certificates
- Coverage
- Installing a wildcard through AutoSSL
- A wildcard from a commercial CA
- Advanced settings
- HSTS (HTTP Strict Transport Security)
- OCSP Stapling
- Certificate Transparency
- TLS versions
- Monitoring expiry
- Getting notifications
- Monitoring services
- Checking in cPanel
- Troubleshooting
- Warning: “Your connection is not private”
- Error “NET::ERR_CERT_COMMON_NAME_INVALID”
- Error “NET::ERR_CERT_AUTHORITY_INVALID”
- AutoSSL is not renewing the certificate
- The site is unavailable after installing SSL
- Best practices
- See also
- External links
SSL/TLS certificates provide a secure HTTPS connection between a visitor’s browser and your website, encrypting the data that is sent.
This article is about shared hosting with cPanel. On your own cloud server, certbot obtains the certificate: Let's Encrypt certificate: certbot.
Why you need SSL
Benefits of HTTPS
- Security
- Encryption of data (passwords, payment information)
- Protection against traffic interception (man-in-the-middle attacks)
- Proof that the site is genuine
- SEO
- Google ranks HTTPS sites higher
- Better visibility in search results
- User trust
- A padlock in the address bar
- No “Not secure” warnings
- Higher conversion rates
- Requirements
- Essential for e-commerce
- Needed for modern APIs
- Required for HTTP/2 and HTTP/3
Types of SSL certificate
By level of validation
| Type | Validation | Time to issue | Cost | When to use |
|---|---|---|---|---|
| DV (Domain Validation) | Domain only | Minutes | Free/cheap | Blogs, personal sites, most websites |
| OV (Organisation Validation) | Domain + organisation | Days | Medium | Corporate sites |
| EV (Extended Validation) | Full company validation | Weeks | High | Banks, shops, finance |
By domain coverage
- Single Domain
- One domain (example.com)
- Wildcard
- The domain and all its subdomains (*.example.com)
- Multi-Domain (SAN)
- Several different domains in one certificate
Let's Encrypt (free SSL)
Let's Encrypt is a free certificate authority supported by cPanel.
Installing Let's Encrypt SSL
- Log in to cPanel
- In the SECURITY section, choose SSL/TLS Status
- Find your domain in the list
- If the status is “Not Secure”, click Run AutoSSL
- Or tick the domain and click Run AutoSSL at the bottom
- Wait for it to finish (usually 1–5 minutes)
- The status changes to “Secure” (green padlock)
What AutoSSL covers
AutoSSL issues certificates for:
- The main domain (example.com)
- The www version (www.example.com)
- Subdomains
- The mail server (mail.example.com)
- cPanel (cpanel.example.com)
- Webmail (webmail.example.com)
Checking AutoSSL status
- SSL/TLS Status
- Look at the statuses:
- Secure (green padlock) – a certificate is installed
- Not Secure (red cross) – no certificate
- Partially Secure (yellow triangle) – mixed content
Automatic renewal
AutoSSL automatically:
- Checks certificates every 24 hours
- Renews them 30 days before they expire
- Sends notifications about problems
To check:
- Go to AutoSSL
- Look at:
- Last Run – the last run
- Next Run – the next run
- Status – the status
Fixing AutoSSL problems
Error: Domain control validation failed
Causes:
- DNS does not point to the server
- A firewall is blocking the check
- The site is password-protected
Solution:
- Check the domain’s A record
- Temporarily turn off password protection (.htaccess)
- Make sure port 80 is open
Error: CAA records prevent issuance
A CAA (Certification Authority Authorization) record is blocking issuance.
Solution:
- Go to Zone Editor
- Find the CAA records
- Add Let's Encrypt:
example.com CAA 0 issue "letsencrypt.org"
example.com CAA 0 issuewild "letsencrypt.org"Some subdomains did not get a certificate
Causes:
- The subdomain has no A record
- The subdomain points to a different server
- The limit has been exceeded (100 subdomains per certificate)
Solution:
- Check the DNS records
- Create a separate certificate for the subdomain
- Use a wildcard certificate
Installing your own SSL certificate
If you have a commercial SSL certificate:
Getting an SSL certificate
- Buy one from a provider (Comodo, DigiCert, Sectigo and others)
- Or get one from a corporate CA
- Generate a CSR (Certificate Signing Request)
Generating a CSR in cPanel
- Go to SSL/TLS
- Choose Generate, view, or delete SSL certificate signing requests
- Fill in the form:
Required fields:
- Key Size: 2048 bits (recommended) or 4096
- Domain(s): example.com, or *.example.com for a wildcard
- Common Name: the fully qualified domain name (FQDN)
- Email: your email address
- Company Name: the company name (for OV/EV)
- Company Division: the department
- City: the city
- State: the county or state
- Country: the country code (GB for the United Kingdom)
- Click Generate
- Copy the CSR (the -----BEGIN CERTIFICATE REQUEST----- block)
- Send the CSR to the certificate authority
Installing an SSL certificate
Once you have the certificate from the CA:
- Go to SSL/TLS
- Choose Manage SSL sites
- Select the domain
- Paste the parts of the certificate:
Certificate (CRT):
-----BEGIN CERTIFICATE-----
MIIFazCCBFOgAwIBAgIRAIIQz7DSQ...
-----END CERTIFICATE-----Private Key:
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAusI/V52eqLb...
-----END RSA PRIVATE KEY-----Certificate Authority Bundle (CA Bundle):
-----BEGIN CERTIFICATE-----
MIIENjCCAx6gAwIBAgIBATANBgkq...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEFzCCAv+gAwIBAgIBADANBgkq...
-----END CERTIFICATE------ Click Install Certificate
- The certificate is activated
Automatic installation (AutoSSL)
Some certificates can be installed automatically:
- Paste the certificate into Install and Manage SSL
- cPanel detects the domain automatically
- It fills in the fields for you
- Click Install
Managing SSL certificates
Viewing installed certificates
- SSL/TLS → Manage SSL sites
- A list of all domains with SSL
- Information shown:
- Issuer
- Expires (expiry date)
- Domains Covered
Certificate details
- SSL/TLS → Manage SSL sites
- Click Browse Certificates
- Select a certificate
- Look at the details:
- Subject (the owner)
- Issuer
- Valid From/To (validity period)
- Serial Number
- Signature Algorithm
- Public Key
Removing an SSL certificate
- Manage SSL sites
- Find the domain
- Click Uninstall
- Confirm the removal
Redirecting HTTP to HTTPS
After installing SSL, set up an automatic redirect:
Method 1: .htaccess (recommended)
- Open File Manager
- Go to public_html
- Edit .htaccess (or create a new one)
- Add this to the top of the file:
# Redirect to HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Or for a specific domain
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]Method 2: Using Redirects
- Go to Domains → Redirects
- Type: Permanent (301)
- From:
http://example.com - To:
https://example.com - Tick Wild Card Redirect
- Click Add
Method 3: WordPress
Add this to wp-config.php:
// Force HTTPS for the admin area
define('FORCE_SSL_ADMIN', true);
// Force HTTPS for the whole site
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';Checking your SSL configuration
Online tools
- SSL Labs Test: SSL Server Test
- A grade from F to A+
- Detailed analysis of the configuration
- Vulnerability checks
- Why No Padlock: Why No Padlock
- Finds mixed content
- SSL Checker: SSL Checker
- Checks that the certificate is valid
- Checks the certificate chain
Checking in a browser
- Open the site in Chrome or Firefox
- Click the padlock in the address bar
- Connection is secure → Certificate is valid
- Look at the details:
- Issued to
- Issued by
- Valid from/to
Checking from the command line
# OpenSSL
openssl s_client -connect example.com:443 -servername example.com
# Check the expiry date
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -dates
# Check the chain
openssl s_client -connect example.com:443 -showcertsFixing mixed content
“Mixed Content” is when an HTTPS page loads HTTP resources.
Types of mixed content
- Passive Mixed Content
- Images, video, audio
- A warning is shown in the console
- Active Mixed Content
- Scripts, styles, iframes, AJAX
- Blocked by the browser!
Finding mixed content
- Open the site over HTTPS
- Open Dev Tools (F12)
- Go to the Console tab
- Look for warnings:
Mixed Content: The page at 'https://example.com/'
was loaded over HTTPS, but requested an insecure image
'http://example.com/image.jpg'Fixing it
Method 1: Relative URLs
Replace absolute URLs with relative ones:
Before:
<img src="http://example.com/image.jpg">
<script src="http://example.com/script.js"></script>After:
<img src="/image.jpg">
<script src="/script.js"></script>Method 2: Protocol-relative URLs
Before:
<script src="http://external.com/script.js"></script>After:
<script src="//external.com/script.js"></script>Method 3: Content Security Policy
In .htaccess:
Header always set Content-Security-Policy "upgrade-insecure-requests;"This automatically upgrades HTTP requests to HTTPS.
Method 4: Search and replace in the database (WordPress)
Use the Better Search Replace plugin, or SQL:
UPDATE wp_posts
SET post_content = REPLACE(post_content,
'http://example.com',
'https://example.com');
UPDATE wp_options
SET option_value = REPLACE(option_value,
'http://example.com',
'https://example.com');Wildcard SSL certificates
Wildcard certificates cover a domain and all its subdomains.
Coverage
A certificate for *.example.com covers:
- sub1.example.com ✅
- sub2.example.com ✅
- any.example.com ✅
- example.com ❌ (needs its own)
- sub.sub1.example.com ❌ (multi-level subdomains are not covered)
Installing a wildcard through AutoSSL
A Let's Encrypt wildcard requires the DNS-01 challenge:
- Go to AutoSSL
- Check whether your hosting supports DNS-01
- Or install it manually:
- certbot certonly --manual --preferred-challenges=dns
- Add a TXT record to DNS
- Complete the validation
A wildcard from a commercial CA
- Generate a CSR for *.example.com
- Buy a wildcard certificate
- Install it through Manage SSL sites
Advanced settings
HSTS (HTTP Strict Transport Security)
Makes the browser use HTTPS only:
In .htaccess:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"Parameters:
- max-age – how long the browser remembers the setting (in seconds)
- includeSubDomains – applies to subdomains too
- preload – adds the site to the browsers’ preload list
OCSP Stapling
Speeds up certificate status checks:
This is normally configured at server level by the hosting provider.
To check:
openssl s_client -connect example.com:443 -statusYou should see:
OCSP response:
======================================
OCSP Response Status: successful (0x0)Certificate Transparency
Logged automatically for Let's Encrypt.
To check:
- crt.sh
- Enter the domain
- Look at the certificates that have been issued
TLS versions
Modern configurations should support:
- TLS 1.3 ✅ (recommended)
- TLS 1.2 ✅ (minimum)
- TLS 1.1 ❌ (obsolete)
- TLS 1.0 ❌ (insecure)
- SSL 3.0 ❌ (critically vulnerable)
The hosting provider configures this in the Apache/Nginx configuration.
Monitoring expiry
Getting notifications
- cPanel sends notifications about certificate problems, including certificates that are about to expire
- Check your contact email address in Contact Information
Monitoring services
- SSL Monitor
- SSL Shopper Monitor
- SSL Labs (manual check)
Checking in cPanel
- SSL/TLS Status
- See the expiry date for all your domains
- Statuses are updated daily
Troubleshooting
Warning: “Your connection is not private”
Causes:
- The certificate has expired
- The certificate was issued for a different domain
- A self-signed certificate
- A problem with the certificate chain
Solution:
- Check the expiry date in SSL/TLS Status
- Make sure the domain matches the Common Name
- Install the correct CA Bundle
- Reissue the certificate
Error “NET::ERR_CERT_COMMON_NAME_INVALID”
The domain does not match the certificate.
Solution:
- Check which domain the certificate was issued for
- Install a wildcard for subdomains
- Or issue a separate certificate
Error “NET::ERR_CERT_AUTHORITY_INVALID”
The browser does not trust the certificate’s issuer.
Causes:
- A self-signed certificate
- The intermediate certificate is missing
- An internal corporate CA
Solution:
- Install the full chain (CA Bundle)
- Use a certificate from a trusted CA
- Add the root certificate to the browser (for an internal CA)
AutoSSL is not renewing the certificate
Check:
- The AutoSSL logs in cPanel
- The DNS records are up to date
- The site is reachable over HTTP (for validation)
- A firewall isn’t blocking it
- You haven’t exceeded the Let's Encrypt quota (50 certificates a week)
Manual renewal:
- SSL/TLS Status
- Run AutoSSL
The site is unavailable after installing SSL
Check:
- Port 443 is open in the firewall
- Apache/Nginx is listening on 443
- The VirtualHost is configured for SSL
- Restart the web server
This is normally set up automatically, but may need action from your hosting provider.
Best practices
- Use HTTPS only
- Redirect all HTTP traffic
- Turn on HSTS
- Monitor expiry dates
- Set up notifications
- Check monthly
- Review your configuration regularly
- Run an SSL Labs test once a quarter
- Aim for a grade of A or A+
- Keep TLS up to date
- Disable old versions (TLS 1.0, 1.1)
- Use modern ciphers
- Protect your private keys
- Don’t store them in public repositories
- Restrict access (chmod 600)
- Replace them promptly if they are compromised
See also
- Setting up redirects to HTTPS
- Fixing mixed content
- Optimising SSL performance
- General website security
External links
Didn’t find the answer? Ask our support team — we’ll help.