Apache - Redirecionar para https antes de AUTH

7

Eu tenho um site de desenvolvimento que requer um nome de usuário e senha (autenticação http básica) antes que o usuário possa ver o site. Eu gostaria de redirecionar para um protocolo seguro primeiro, antes que o usuário possa enviar a senha em texto não criptografado. Alguma idéia de como fazer isso usando o Apache? Eu tenho acesso aos arquivos conf e .htaccess.

Os resultados finais seriam:

link - Quando o usuário acessa o site, ele é redirecionado imediatamente para https:

link

    
por Jay 16.10.2009 / 23:19

5 respostas

4

Você pode usar a diretiva redirecionar em httphosthost para redirecionar para o site https onde a autenticação é feita. Você também pode usar o mod_rewrite para fazer o redirecionamento. O básico é simplesmente não configurar a autenticação no http virtualhost e redirecionar tudo no host virtual https onde a autenticação é feita.

    
por 16.10.2009 / 23:30
7

Independentemente de como você tem o vhost SSL configurado, eu usaria essa configuração para o vhost não-SSL:

<VirtualHost *:80>
    ServerName www.sitename.com
    ServerAlias sitename.com others-if-you-like.com
    ServerAdmin [email protected]

    RedirectMatch ^/(.*)    https://www.sitename.com/$1 [L,R]

</VirtualHost>

Adicione também linhas para o seu registro, mas nada mais é necessário. Tudo será redirecionado permanentemente para a URL https: //, e o site. SSL ou outras coisas de controle de acesso não serão tratadas até depois do redirecionamento.

    
por 17.10.2009 / 00:37
0

Você também pode ver essa entrada de blog aqui que explica como fazer isso com SSLRequireSSL , uma diretiva ErrorDocument 403 personalizada que aponta para um script perl que redireciona para o URL HTTPS correto.

    
por 17.10.2011 / 15:43
0

O webapp do nosso cliente está instalado em seu diretório webuser. A autorização é tratada antes das regras do mod_rewrite ( link ), e nós não conseguimos que a resposta aceita funcione, então mod_rewrite não pareceu opção.

Eventualmente, solicitamos explicitamente o SSL e usamos a raiz da webapp em HTTPS como documentos de erro 403 e 404. Então quando alguém visita qualquer página sobre HTTP (que não é autorizada, daí a 403) ou uma página não existente (404), ele está sendo redirecionado para ie. link .

Este é o arquivo .htaccess com alguma informação extra nos comentários.

### INFO: Rewrites and redirects are handled after authorisation
### @link https://serverfault.com/a/443185/253111

### INFO: Log out of a HTPASSWD session
### This was not always possible, but Firefox and Chrome seem to end sessions
### when a new one is trying to be using ie.:
### https://logout:[email protected]/~WEBUSER/
### @link http://stackoverflow.com/a/1163884/328272

### FORCE SSL: Explicitly require the SSL certificate of a certain domain to
### disallow ie. unsigned certificates. ErrorDocument's are used to redirect
### the user to an HTTPS URL.
### @link http://forum.powweb.com/showthread.php?t=61566
SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire  %{HTTP_HOST} eq "DOMAIN.TLD"

### HTPASSWD AUTHENTICATION
AuthUserFile /var/www/vhosts/DOMAIN.TLD/web_users/WEBUSER/.htpasswd
AuthType Basic
AuthName "Hello"
Require valid-user

### ERROR DOCUMENTS: Redirect user in case of a 403 / 404.
ErrorDocument 403 https://DOMAIN.TLD/~WEBUSER/admin
ErrorDocument 404 https://DOMAIN.TLD/~WEBUSER/admin
    
por 17.02.2015 / 12:56
-1

Se bem me lembro, a autenticação básica http é feita no primeiro handshake antes que a sessão SSL seja estabelecida. Portanto, mesmo se você estiver efetuando login em um servidor SSL, a autenticação básica será feita em texto simples. Esse tem sido um dos problemas de longa data com a autenticação básica. Talvez um dos outros métodos de autenticação http lide com isso. Tem sido um longo tempo desde que eu olhei para isso.

    
por 28.02.2011 / 22:34