openssl s_client is not a particularly great tool for this, but it can be done. Let's break this down into two parts. First, making the HTTP request, and second, extracting your content from the response.
Making the HTTP request
The hardest part here is that s_client closes the connection when its stdin gets closed. So you need to keep stdin open until the connection is closed. Based on this ServerFault answer, you can do something like:
(printf "GET $PATH HTTP/1.0\r\nHost: $HOST\r\n\r\n"; sleep 10) | \
openssl s_client -connect $HOST:443 -quiet) > /tmp/output.tmp
There are some big limitations here. First is that you need to set the time for sleep long enough that the transfer can complete. But not so long that you wait forever. Second is that there's no redirect handling, so you need a URL that will serve the data directly on the URL you request rather than 302ing you off somewhere else.
Extracting the data
Now you have a /tmp/output.tmp that has the HTTP response in it, which includes your data and some headers. Stripping the headers is harder than it sounds, because you may have a mixture of \r\n and \n newlines, and you may be transferring binary data.
If your file is Unix style text (e.g., a shell script), then you can get rid of all the \r characters and remove everything up to and including the first blank line:
tr -d '\r' < /tmp/output.tmp | sed '1,/^$/d' > /tmp/output
If your file is binary (e.g., an executable), then you can't just delete the \r characters. Assuming the first few bytes of your file are fairly unique (let's say \xF7ELF in this example), and assuming you have GNU grep available, you can do something like this:
SKIP=$(grep -aboF "$(printf "\xf7ELF")" output | head -1 | awk -F: '{print $1}')
dd ibs=1 if=/tmp/output.tmp of=/tmp/output skip=$SKIP