Estou tentando configurar o serviço https em minha instância guest do VirtualBox que executa o Debian Squeeze e o Apache 2.
Ao tentar carregar a página de teste do meu host virtual em um navegador da minha máquina host Win7, estou recebendo um erro " ssl_error_rx_record_too_long ". Ao mesmo tempo, o log de erros do Apache diz " Método inválido na solicitação \ x16 \ x03 \ x01 " para esta solicitação. O problema provavelmente não está relacionado ao fato de que estou executando o Apache dentro de um convidado do VirtualBox, mas queria pintar todo o quadro para você.
A parte realmente interessante é que eu já cheguei ao ponto em que o site é carregado corretamente, mas apenas para solicitações vindas de localhost (ou seja, de dentro do VirtualBox Debian Guest). Eu verifiquei isso com lynx e wget, eles funcionam como esperado:
wget https://ssltest.intra/ssl.html
--2013-09-13 07:26:49-- https://ssltest.intra/ssl.html
Resolving ssltest.intra (ssltest.intra)... 127.0.0.1
Connecting to ssltest.intra (ssltest.intra)|127.0.0.1|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 122 [text/html]
Saving to: 'ssl.html.1'
100%[======================================>] 122 --.-K/s in 0s
2013-09-13 07:26:49 (1.94 MB/s) - 'ssl.html.1' saved [122/122]
O conteúdo do arquivo salvo é exatamente o esperado.
Além disso, se eu tentar falar com o servidor via HTTP em texto simples, ele me envia corretamente para um lugar melhor:
telnet ssltest.intra 443
Trying 127.0.0.1...
Connected to ssltest.intra.
Escape character is '^]'.
GET /ssl.html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Reason: You're speaking plain HTTP to an SSL-enabled server port.<br />
Instead use the HTTPS scheme to access this URL, please.<br />
<blockquote>Hint: <a href="https://ssltest.intra/"><b>https://ssltest.intra/</b></a></blockquote></p>
<hr>
<address>Apache/2.2.22 (Debian) Server at ssltest.intra Port 443</address>
</body></html>
Connection closed by foreign host.
Arquivos de configuração abaixo (eu tirei tudo da configuração, exceto o mínimo para que este site SSL funcione)
ports.conf:
Listen 443
link
ssltest.intra: (a configuração do virtualhost)
<VirtualHost *:443>
ServerName ssltest.intra
ServerAdmin [email protected]
SSLEngine On
SSLCertificateFile /etc/ssl/certs/ssltest.intra.crt
SSLCertificateKeyFile /etc/ssl/certs/ssltest.intra.key
DocumentRoot /var/www/ssltest.intra
Options FollowSymLinks
<Directory /var/www/ssltest.intra/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
php_value error_log /var/www/ssltest.intra/php_errors.log
ErrorLog /var/log/apache2/ssltest.intra.error.log
LogLevel warn
CustomLog /var/log/apache2/ssltest.intra.access.log combined
</VirtualHost>
Verifiquei se as chaves do certificado estão no local indicado e se são chaves válidas (não expiradas) para o domínio. A configuração do host virtual acima foi ativada por a2ensite ssltest.intra
. mod_ssl foi habilitado, apache2 reiniciado (várias vezes). Quando eu começo o apache, esta é a entrada no log:
Apache/2.2.22 (Debian) PHP/5.3.3-7+squeeze14 with Suhosin-Patch mod_ssl/2.2.22
OpenSSL/1.0.1e mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
Não há regras de firewall que impeçam qualquer comunicação acima de 443.
O que estou perdendo?
EDIT Aparentemente, isso tem algo a ver com a configuração da rede do VirtualBox. Quando tento acessar o site localmente como 127.0.0.1, tudo funciona conforme o esperado. Quando tento ligar (também localmente) através da outra interface NAT-ed (192.168.56.10), o pedido é rejeitado. Alguma dica sobre como resolver isso?