Install a certificate that covers this hostname on nginx
Why it matters
The certificate the server presents is issued for other names, so browsers show a name-mismatch warning and refuse to continue silently. This happens when the host was never added to the certificate, or when the server picks the wrong certificate for the name.
The fix
- Give the host its own server block on 443 with its own certificate files. A request for a name that matches no server_name gets the default server's certificate, which is the usual cause of this finding.
- If you use certbot, name the certificate to change with --cert-name and list every name it should cover, then reload nginx. The folder /etc/letsencrypt/live/<name> is named after the first -d value of the original request, so run sudo certbot certificates to see the real name and path.
- Test the configuration and reload.
/ etc/ nginx/ conf.d/ site.conf
server { listen 443 ssl; server_name example.com; # use the path that "sudo certbot certificates" shows ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; } # add a missing name to an existing certbot certificate (list ALL names it should cover) # sudo certbot --nginx --cert-name <name> -d example.com -d other-name.example # sudo nginx -t && sudo systemctl reload nginx
The examples use example.com. Replace it with your own domain.
Related
- Reported by the certificate chain and expiry check
- Renew the expired TLS certificate
- Fix a certificate that is not valid yet
- Renew the certificate before it expires
- Replace the self-signed certificate with a trusted one
- Use a certificate from a publicly trusted authority
- Serve the full certificate chain
- Replace the expired intermediate certificate
- Re-issue the certificate with a stronger key
- Replace the certificate that uses a broken hash
- Fix the certificate that browsers reject
Scan your domain to see whether this applies to you.