Redirecionar de http para https [duplicado]

2

Eu tenho uma instalação do Hudson / Jenkins que é executada na porta 443, para que eu possa acessá-lo com https://ci.mydomain.com . Eu não tenho um servidor web rodando na porta 80 como o Apache Httpd, mas eu quero se um usuário digitar http://ci.mydomain.com ele deve ser redirecionado para https://...

Eu tentei com iptables :

/sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 443
/sbin/iptables-save
chkconfig --level 35 iptables on

Mas o navegador me diz que a conexão falhou. Então eu não quero instalar o servidor web Apache, eu só deseja ter um redirecionamento de http://ci.mydomain.com para https://ci.mydomain.com .

    
por Tim 08.06.2011 / 17:43

6 respostas

10

iptables NÃO É o que você quer aqui - Você está enviando um navegador que espera falar HTTP (apenas texto chato) para um servidor que está falando HTTPS (criptografado e Muito confuso para o seu navegador).

Você deseja um Redirecionamento série 300 emitido pelo seu servidor da web para enviar o cliente para o URL https: // apropriado. Se você estiver executando o Apache, você pode combinar isso com a diretiva SSLRequireSSL ( Entrada manual ) para garantir que seus clientes não possam acessar recursos que devem ser criptografados em canais não criptografados.

    
por 08.06.2011 / 17:53
5

HTTP e HTTPS são protocolos de nível de aplicativo diferentes, portanto, você não pode apenas redirecionar em um nível de transporte. Você deve configurar o Apache ou Nginx ou algo na porta 80 para executar um redirecionamento HTTP apropriado usando um Location header.

    
por 08.06.2011 / 17:49
3

Configure um VirtualHost relativamente em branco, escutando 80, que não faz nada além de

RewriteEngine On

RewriteRule (.*) https://foo.com$1

    
por 08.06.2011 / 18:26
2

Ir de http para https é mais do que apenas mudar de porta. Estes são dois protocolos diferentes e sua instalação Hudson / Jenkins está procurando por https e não http.

Eu não sei como fazer o que você deseja sem instalar algo como o Apache para escutar na porta 80.

    
por 08.06.2011 / 17:50
1

Você provavelmente está em um impasse aqui como http & Os https são bastante diferentes quando um simples redirecionamento de portas não funciona.

    
por 08.06.2011 / 17:50
0

Se este for um follow-up de esta questão , o problema é que você está tentando executar o Jenkins em uma porta privilegiada (< 1024). Você está misturando as coisas com a porta 80 e 443 em sua pergunta aqui.

Execute o Jenkins na porta 8443 (que é comum para uma porta HTTPS não privilegiada) e use iptables para redirecionar de / para 443 e 8443.

Para redirecionar de http:// para https:// , o Apache e mod_rewrite são uma boa escolha, como outros sugeriram. Como alternativa, qualquer servidor da Web pequeno deve ser capaz de enviar um redirecionamento (status HTTP 301 ou 302) com um cabeçalho Location .

    
por 08.06.2011 / 20:28