Acontece que não há nada errado com o código acima. O problema é que o servidor que eu estava executando está falando com um balanceador de carga que só se comunica na porta 80.
Assim, a solicitação HTTPS chega na porta 443, atinge o balanceador de carga, que a redireciona para a porta 80. Em seguida, o servidor da Web o redireciona de volta para 443, que é redirecionado para 80, para 443, para 80, para 443 ...
Assim, a solução é denunciá-lo à pessoa que mantém o balanceador de carga e esperar que ele possa descobrir isso.
Obrigado pela ajuda de qualquer forma, todos vocês foram muito pacientes.