Apache directs https:b-site visitor to https:a-site (b-site don't have ssl)

Solution 1:

You have only a-site.com:443 VirtualHost defined for port 443 (https) so Apache shows only the site it can find to show.

You need to define a default VirtualHost on port 443 <VirtualHost _default_:443> the same way as you have in 000-default.conf (or check if you have default-ssl.conf and enable it). You still need a TLS/SSL certificate for the default host but you can create a self-signed certificate. Debian-based systems already have one generated for you as /etc/ssl/certs/ssl-cert-snakeoil.pem.