Mine is all SSL only and works fine.
However you need to be a bit more crafty with your templates. Rocketchat demonstrates how to do this.
You need some lines in httpd.conf similar to this
# Redirect Letsencrypt queries
RewriteRule ^/.well-known/acme-challenge(/.*|$) https://%{HTTP_HOST}/.well-known/acme-challenge$1 [L,R]
# Everything else goes to https/home
RewriteRule ^/(.*|$) https://%{HTTP_HOST}/home [R,L]
In domains you need this:
your.subdomain.com=domain
TemplatePath=ProxyPassForYourSubDomain
Then create a new template directory in /etc/e-smith/templates/etc/httpd/conf/httpd.conf
I copied over the existing ProxyPassVirtualHosts directory to ProxyPassForYourSubDomain
I then modified the standard ProxyPassContent template as follows for Rocket - note specifically the redirect Letsencrypt lines which are what you are after :
{
use esmith::DomainsDB;
my $db = esmith::DomainsDB->open_ro;
my $d = $db->get($virtualHost);
my $t = $d->prop('ProxyPassTarget');
if ( $port eq "80" ) {
$OUT .= " # Redirect Letsencrypt queries\n";
$OUT .= " RewriteRule ^/.well-known/acme-challenge(/.*|\$) https://%{HTTP_HOST}/.well-known/acme-challenge\$1 [L,R]\n";
$OUT .= " # Everything else goes to https/home\n";
$OUT .= " RewriteRule ^/(.*|\$) https://%{HTTP_HOST}/home [R,L]\n";
}
if ( $port eq "443" ) {
$OUT .= " SSLEngine On\n";
$OUT .= " # Letsencrypt\n";
$OUT .= " ProxyPass /.well-known/acme-challenge/ !\n";
$OUT .= " # Websockets\n";
$OUT .= " ProxyPassMatch ^/sockjs/(.*)/websocket ws://localhost:3000/sockjs/\$1/websocket\n";
$OUT .= " # Everything else\n";
$OUT .= " ProxyPass / http://127.0.0.1:3000/\n";
$OUT .= " ProxyPassReverse / http://127.0.0.1:3000/\n";
}
}
Job done

B. Rgds
John