Can I read the domain name from HTTPS before SSL handshake?
Yes, as long as the server and the clients support the Server-Name-Indication (or SNI) extension. This extension allows for virtual hosting for HTTPS, where you have multiple independent domains and certifications bound to a single IP address.
Most clients these days do support SNI. The place where you might have issues is if you have older clients using platforms like Windows XP, old versions of Android, or Java 6.
Without SNI, the domain first appears in cleartext in the Server Hello of the TLS handshake (In the rdnSequence of the Certificate field).
With SNI, the domain first appears in cleartext in the Client Hello of the TLS handshake (In the SNI field).
Source: I fired up apache2 with TLS and took packet captures before and after implementing SNI (Virtual Hosts in apache2).
Aside from SNI, there is an option to get a multi-domain certificate. Several certificate providers offer such certificates (not endorsing anyone, Google is your friend).
With a multi-domain certificate, you don't need to know the domain name at the beginning of the handshake, as the certificate is effectively valid for all the domain names listed.
Here's how an example of how such certificate looks like: