O HTTP contém várias sintaxes de mensagens diferentes que são usadas em diferentes situações. As mensagens enviadas para um servidor (ou proxy reverso) são bem diferentes daquelas enviadas para um proxy.
Como você tem a configuração haproxy para operar como um proxy reverso, ele não permite as mensagens que o navegador precisa para configurar um túnel HTTPS.
Como tudo o que você está realmente tentando fazer é proteger suas conexões com o Squid, sugiro que você simplesmente o ouça em uma https_port para conexões do navegador. Isso precisará de uma configuração de certificado TLS com o nome de host público de proxies, é claro. Observe que isso não é o mesmo detalhe de certificado usado para um proxy reverso (que usa o nome de domínio do servidor de origem).
O Firefox e o Chrome aparentemente oferecem suporte a TLS para um proxy explícito quando configurado para usá-lo por meio de um arquivo PAC ou da variável de ambiente https_proxy =. Em ambos os casos, o URI do proxy deve usar https: // scheme, onde tradicionalmente seria colocado http: // scheme.
(Eu digo aparentemente porque eu não tentei ainda. Outros tiveram resultados mistos, mas o pessoal do navegador continua dizendo que é possível).