Não vejo um motivo para me conectar primeiro usando um protocolo inseguro e redirecionar para HTTPS depois.
A maneira como isso é feito usando o servidor da Web apache
é bem simples, você pode usar qualquer um dos campos do certificado do cliente para autenticar seus usuários:
Require ssl-verify-client
SSLRequireSSL
SSLOptions +FakeBasicAuth +StrictRequire
SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 256
SSLRequire %{SSL_CLIENT_S_DN_O} eq "Awesome Company" \
and %{SSL_CLIENT_S_DN_OU} eq "Development" \
and %{SSL_CLIENT_S_DN_CN} in {"John Doe", "Jane Doe"}
Leia a documentação on-line para obter mais orientações.