The SSL certificate trust model is based on the concept of
I can trust "web site X" because "signing authority Y" says I should.
When connecting via https, a visitor's browser asks for your site's "certificate" and makes 2 checks:
- Does the name listed in the certificate match the name used to access the site?
- Is the certificate "signed" by one of the SSL signing authorities in my list of "Trusted Root Certification Authorities"?
By default Windows has a list of commercial Root Certification Authorities that act as "signing authority Y". The certificates for these authorities (Verisign, QuoVadis, Microsoft, Go Daddy, Hong Kong Post, and several others) are pre-installed by Microsoft (presumably for a fee).
In the instance of a self-signed certificate, you manually generate an SSL certificate for your website that claims to be signed by your own server - then you must manually add your own server's certificate to all visitors' lists of "Trusted Root Certification Authorities".
In the case of a CA Cert certificate, you work with CA Cert to generate a certificate signed by CA Cert, then manually add CA Cert's certificate to all visitors' lists of "Trusted Root Certification Authorities".
If you buy a certificate from one of the pre-installed Root Authorities that matches your server name, you don't need to do any manual root certificate manipulation because Microsoft has already pre-installed the certificates for these authorities.
If the name you are using to access your server does not exactly match the name used to generate the server's certificate, visitors will receive an error message no matter who signed your certificate.
If you generate a certificate for server "my.smeserver.com", then try to access it at "https://a.b.c.d", you'll get an error because "a.b.c.d" does not match "my.smeserver.com". If you try to access it at "
www.smeserver.com", you'll get an error for the same reason.
To have a certificate as you want that allows access both by name and IP address without showing any errors you need to build the certificate to support multiple different names. I know you can build one saying "my.smeserver.com" and "*.smeserver.com", but I don't know how to build one that adds a totally separate name like "a.b.c.d".
To figure out exactly why your browser doesn't like your certificate, browse to your website using IE7, click on the prominent and annoying "Certificate Error" button to the right of the Address, then click "View certificates". The "General" tab will show you the certificate details for the current website - see what it says.