Keyword: SNI (Server Name Indication)
Looks like either your server or your client is missing SNI support, see
https://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI
To test whether your server is returning SNI header information you may try
openssl s_client -servername www.SERVERNAME.com -tlsextdebug -connect www.YOURSERVER.com:443 2>/dev/null | grep "server name"
see http://serverfault.com/questions/506177/how-can-i-detect-if-a-server-is-using-sni-for-httpshttps://serverfault.com/questions/506177/how-can-i-detect-if-a-server-is-using-sni-for-https
You may also try such SSL Server Test https://www.ssllabs.com/ssltest/ The "Handshake Simulation" should give you something like this for older clients:
Android 2.3.7 No SNI Incorrect certificate because this client doesn't support SNI
but matching certificates for the newer clients.
BTW here somebody had a similar problem http://serverfault.com/questions/510132/apache-sni-namevhosts-always-route-to-first-virtualhost-entryhttps://serverfault.com/questions/510132/apache-sni-namevhosts-always-route-to-first-virtualhost-entry