Skip to main content
Troubleshooting

Fixing Browser “Connection Not Secure” Warnings

Diagnose insecure-connection and privacy warnings caused by certificate or HTTPS configuration problems.

Warnings such as “Your connection is not private” disrupt access and undermine user confidence. This guide explains common causes and how to fix them.

1. Common browser warnings​

1. Chrome and Edge​

Warning messages:

  • “Your connection is not private”
  • "NET::ERR_CERT_AUTHORITY_INVALID"
  • "NET::ERR_CERT_DATE_INVALID"
  • "NET::ERR_CERT_COMMON_NAME_INVALID"

2. Firefox​

Warning messages:

  • “Secure Connection Failed”
  • "SEC_ERROR_EXPIRED_CERTIFICATE"
  • "SEC_ERROR_UNKNOWN_ISSUER"
  • "SSL_ERROR_BAD_CERT_DOMAIN"

3. Safari​

Warning messages:

  • “This Connection Is Not Private”
  • “Safari can't verify the identity of this website”

2. Understanding the causes​

1. Expired certificate​

Symptoms:

  • The browser reports an expired certificate
  • NET::ERR_CERT_DATE_INVALID is displayed

Causes:

  • The certificate has passed its expiration date
  • Renewal was not completed in time

Resolution:

  1. Check the certificate validity period
  2. Renew the certificate
  3. Redeploy the certificate

2. Incomplete certificate chain​

Symptoms:

  • The browser displays NET::ERR_CERT_AUTHORITY_INVALID
  • The site works in some browsers but not others

Causes:

  • The server does not send the complete certificate chain
  • An intermediate CA certificate is missing

Resolution:

  1. Use the full-chain certificate file
  2. Configure the server to send the intermediate chain
  3. Verify the chain file

3. Hostname mismatch​

Symptoms:

  • The browser displays NET::ERR_CERT_COMMON_NAME_INVALID
  • The certificate does not cover the requested hostname

Causes:

  • The certificate was issued for a different domain
  • The wrong certificate is installed

Resolution:

  1. Make sure the certificate covers the requested hostname
  2. Deploy the correct certificate
  3. Check wildcard certificate coverage

4. Self-signed certificate​

Symptoms:

  • The browser reports an untrusted certificate
  • Access requires a manually configured trust exception

Causes:

  • The server uses a self-signed certificate
  • The issuer is not a trusted CA

Resolution:

  1. Use a certificate issued by a trusted CA
  2. Request a free certificate from a CA such as Let's Encrypt
  3. Use CertOne to request a free certificate

5. Mixed content​

Symptoms:

  • An HTTPS page shows an insecure-content warning
  • Some resources fail to load

Causes:

  • The HTTPS page loads HTTP resources
  • Mixed content is present

Resolution:

  1. Change all resource URLs to HTTPS
  2. Use relative URLs where appropriate
  3. Configure a Content Security Policy

3. Diagnostic steps​

1. Inspect the certificate​

Inspect in the browser:

  1. Open the connection security information in the address bar
  2. View the certificate details
  3. Check the certificate validity period
  4. Check the certificate's domain names

Inspect from the command line:

# Inspect certificate details.
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -text

# Check the certificate validity period
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates

# Check the certificate chain
echo | openssl s_client -connect example.com:443 -servername example.com -showcerts

2. Use a TLS testing tool​

SSL Labs:

  1. Visit https://www.ssllabs.com/ssltest/
  2. Enter your domain
  3. Review the detailed report
  4. Check the certificate chain, protocols, and cipher suites

Other testing tools:

Resolution​

1. Expired certificate​

Renew immediately:

  1. Request a replacement certificate through CertOne
  2. Download the new certificate
  3. Install it on the server
  4. Restart the web server

Automate renewal:

  • Enable automatic renewal in CertOne
  • Ensure renewal completes before expiration

2. Incomplete certificate chain​

NGINX configuration:

server {
listen 443 ssl;
server_name example.com;

# Use the full-chain file.
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
ssl_trusted_certificate /etc/nginx/ssl/chain.crt;
}

Apache configuration:

<VirtualHost *:443>
ServerName example.com
SSLEngine on

SSLCertificateFile /etc/apache2/ssl/cert.pem
SSLCertificateKeyFile /etc/apache2/ssl/private.key
SSLCertificateChainFile /etc/apache2/ssl/chain.crt
</VirtualHost>

3. Hostname mismatch​

Check certificate hostnames:

# Inspect the names covered by the certificate.
openssl x509 -in certificate.crt -noout -text | grep -A 1 "Subject Alternative Name"

Resolution:

  1. Make sure the certificate covers the exact requested hostname
  2. Use a wildcard certificate for the appropriate subdomains
  3. Use a multi-domain certificate for multiple names

4. Self-signed certificate​

Obtain a trusted certificate:

  1. Request a free certificate through CertOne
  2. Request a free certificate from Let's Encrypt
  3. Purchase a commercial certificate

Quick issuance:

  • CertOne: complete the request in a few minutes
  • Supports automatic validation with DNS authorization
  • Free of charge

5. Mixed content​

Fix mixed content:

  1. Replace HTTP resource URLs with HTTPS
  2. Use relative URLs
  3. Configure a Content Security Policy

NGINX configuration:

# Upgrade insecure requests.
add_header Content-Security-Policy "upgrade-insecure-requests" always;

Apache configuration:

# Upgrade insecure requests.
Header always set Content-Security-Policy "upgrade-insecure-requests"

5. Prevention​

1. Choose a trusted CA​

Certificate sources:

  • Let's Encrypt (free CA)
  • CertOne (free Let's Encrypt issuance service)
  • DigiCert (commercial CA)
  • Sectigo (commercial CA)

2. Configure the chain correctly​

Serve the full chain:

  • Use a full-chain file containing intermediate CA certificates
  • Configure the server to send the intermediate chain
  • Check chain completeness regularly

3. Renew certificates regularly​

Automatic renewal:

  • Automate renewal with CertOne
  • Automate renewal with acme.sh
  • Automate renewal with Certbot

4. Monitor certificate status​

Set up monitoring:

  • Use CertOne site certificate monitoring
  • Set expiration reminders
  • Check certificate status regularly

6. Common error codes​

1. NET::ERR_CERT_AUTHORITY_INVALID​

Cause: an incomplete chain or untrusted certificate.

Resolution:

  • Use the complete certificate chain
  • Use a certificate from a trusted CA

2. NET::ERR_CERT_DATE_INVALID​

Cause: the certificate is expired or not yet valid.

Resolution:

  • Renew the certificate
  • Check the system clock

3. NET::ERR_CERT_COMMON_NAME_INVALID​

Cause: the certificate does not cover the requested hostname.

Resolution:

  • Deploy the correct certificate
  • Verify hostname coverage

4. NET::ERR_CERT_REVOKED​

Cause: the certificate has been revoked.

Resolution:

  • Obtain a new certificate
  • Inspect the certificate

7. Testing and verification​

1. Clear browser state​

Steps:

  1. Clear the browser cache
  2. Clear cached SSL state where supported
  3. Visit the website again

2. Test multiple browsers​

Browsers to test:

  • Chrome/Edge
  • Firefox
  • Safari
  • Mobile browsers

3. Use a TLS testing tool​

Testing tools:

  • SSL Labs SSL Test
  • SSL Checker
  • Why No Padlock

Best practices​

1. Certificate management​

  • ✅ Use a trusted CA
  • ✅ Configure the certificate chain correctly
  • ✅ Renew certificates regularly
  • ✅ Monitor certificate status

2. Server configuration​

  • ✅ Use secure TLS protocols
  • ✅ Configure security response headers
  • ✅ Enable HSTS
  • ✅ Avoid mixed content

3. Monitoring and maintenance​

  • ✅ Set certificate expiration reminders
  • ✅ Use automatic renewal
  • ✅ Review TLS configuration regularly
  • ✅ Verify with TLS testing tools

Conclusion​

Browser security warnings commonly result from expired certificates, incomplete chains, hostname mismatches, or untrusted issuers. Correct configuration, trusted issuance, timely renewal, and monitoring help prevent them.

Key points:

  • ✅ Use a certificate issued by a trusted CA
  • ✅ Configure the certificate chain correctly
  • ✅ Verify certificate hostname coverage
  • ✅ Renew certificates regularly
  • ✅ Avoid mixed content

CertOne provides free certificate issuance, management, and automatic renewal to help address these problems and prevent recurrence.