Redirecionar http para https apache em porta diferente

2
<VirtualHost *:82>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/cert.pem
DocumentRoot "/var/www/site"
<Directory "/var/www/site">
allow from all
Options -Indexes
</Directory>
</VirtualHost>

Esta é a minha configuração do host virtual. Seu ssl funcionando na porta 82.

Meu problema é, quando tento obter essa página com http, a página de erro de retorno é:

Bad Request

Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.
Hint: https://localhost:82/

Então, eu só quero redirecionar http para https na porta 82. Eu tento adicionar:

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

mas não está funcionando, pois exige o http primeiro.

Como posso fazer isso?

Obrigado.

    
por Cem 01.08.2012 / 23:38

1 resposta

1

I know that you can redirect 80 to 443 ssl, those are different ports. But in my case i want to serve everything on this port (82) via ssl. Maybe its possible to do it with playing custom error page since its showing an error page when i use http on this port but i don't know how

Não é possível hospedar texto criptografado e texto simples na mesma porta. Se alguém se conectar à porta de texto simples, digamos, porta 80 ou 81, você poderá encaminhá-la para sua porta HTTPS, por exemplo, 82 neste exemplo. Então, algo assim deveria fazer o truque:

# Plain-text rewrite:
<VirtualHost *:81>
DocumentRoot "/var/www/site"
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}:82%{REQUEST_URI}
<Directory "/var/www/site">
allow from all
Options -Indexes
</Directory>
</VirtualHost>

# SSL config
<VirtualHost *:82>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/cert.pem
DocumentRoot "/var/www/site"
<Directory "/var/www/site">
allow from all
Options -Indexes
</Directory>
</VirtualHost>

Neste caso, qualquer usuário que se conecte à porta 81 será encaminhado para a porta 82. Qualquer pessoa que se conecte à porta 82 será através de SSL.

    
por 02.08.2012 / 00:42