When I call out to an external webservice, I'm getting the following exception "System.CalloutException: IO Exception: java.security.cert.CertificateException: No subject alternative names present".
I haven't had this problem previously when doing 1-way or 2-way SSL - we've used Server Certificates with no SAN (Subject Alternative Name) before, and they worked perfectly fine.
I've checked the Remote Site Settings and there is definitely an entry pointing to the IP address in the CN (Common Name) field on the server certificate.
The endpoint in my code is definitely pointing to the same CN as is on the server certificate, and I'm using https.
Note that this is (probably going to be, in 2 days!) self-answered, if you have anything further to add, or if the way your problem arose differs to the scenario in the question, let me know in comments, or edit the question or answer as appropriate. If you think the answer I've given to this question is off base, feel free to add a completely new answer instead of commenting on mine