Redirecionamento Global da porta 80 para 443

1

Eu gostaria de configurar minha caixa linux para que qualquer coisa que acesse a porta 80 seja simplesmente pedida, que seja 443. Eu quero que seja independente do domínio, IP ou quaisquer detalhes específicos que possam existir. Se pode ser solicitado da porta 80, deve ser dito não. Nós fazemos isso em 443.

Eu estarei usando o Apache no 443, então poderia vinculá-lo a 80 com bastante facilidade, mas não vejo a solução como tendo que incluir o Apache na porta 80.

Para esclarecer, estou procurando uma solução que não requeira alterações nos vhosts. Eu entendo redirecionamentos globais que podem ser transmitidos com herança. Isso requer mudanças no vhost. Estou à procura de algo mais abrangente e menos propenso a "Opa, esqueci essa linha e agora a porta 80 está expondo meus dados não criptografados".

Como você resolveria esse problema? iptables, apache, script de shell personalizado com netcat e alguma mágica para torná-lo SSL?

    
por flickerfly 11.11.2013 / 17:23

3 respostas

7

Tente adicionar isso ao seu httpd.conf;

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

A partir daqui - > link

Isso usa o mod_rewrite, então certifique-se de ter instalado isso previamente.

O método recomendado é quando você define isso no arquivo VHOST para cada site, conforme descrito aqui;

link

No entanto, o wiki do Apache documenta o método de reescrita acima em mais detalhes;

link

    
por 11.11.2013 / 17:39
4

Redirecionar a porta 80 para 443 é trivial com o iptables, mas a partir da sua descrição você claramente não quer rodar http na porta 443: Você quer que as pessoas sejam redirecionadas de http para https.

Você está claramente ciente de que isso pode ser feito no Apache para cada host virtual, mas você prefere não usá-lo para evitar oops de configuração; caso contrário, a solução do sgtbeano é o que eu recomendaria.

Com base nisso, recomendo que você pare de usar o Apache na porta 80 e que execute outro servidor da Web na porta 80 que faz o redirecionamento simples.

Você pode até mesmo executar uma instância separada do Apache na porta 80 com um diretório de configuração diferente. Isso também evita a configuração de oopses, mas pode ser mais difícil de manter (muitas pessoas não esperam duas instâncias diferentes do Apache no mesmo host com dois conjuntos diferentes de arquivos de configuração). Neste caso, você pode usar a configuração do sgtbeano para a instância da porta 80.

    
por 11.11.2013 / 17:42
0

como HTTP e HTTPS são dois protocolos diferentes, você não pode simplesmente iptables tcp / 80 redirecion para tcp / 443, como o apache não entenderia HTTP em tcp / 443

, portanto, a solicitação HTTP deve chegar ao apache / nginx / etc e ser "redirecionada" na camada do aplicativo. isso seria feito no nginx com "redirect / link " ou usando a regra de reescrever no apache

    
por 11.11.2013 / 17:41