Configuración de Apache SSL: método no válido en la solicitud \x16\x03\x01

Configuración de Apache SSL: método no válido en la solicitud \x16\x03\x01

Estoy intentando configurar el servicio https en mi instancia invitada de VirtualBox que ejecuta Debian Squeeze y Apache 2.

Al intentar cargar la página de prueba de mi host virtual en un navegador desde mi máquina host Win7, aparece un error "ssl_error_rx_record_demasiado_largo". Al mismo tiempo, el registro de errores de Apache dice "Método no válido en la solicitud \x16\x03\x01" para esta solicitud. El problema probablemente no esté relacionado con el hecho de que estoy ejecutando Apache dentro de un invitado de VirtualBox, pero quería mostrarle el panorama completo.

La parte realmente interesante es que ya llegué al punto en el que el sitio se carga correctamente, pero sólo para solicitudes provenientes de localhost (es decir, desde VirtualBox Debian Guest). Verifiqué esto con lynx y wget, funcionan como se esperaba:

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]

El contenido del archivo guardado es exactamente el esperado. Además, si intento hablar con el servidor a través de HTTP en texto plano, con razón me envía a un lugar mejor:

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.

Archivos de configuración a continuación (he eliminado todo de la configuración excepto el mínimo indispensable para que este sitio SSL funcione)

puertos.conf:

Listen 443

httpd.conf: vacío

ssltest.intra: (la configuración del host virtual)

<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>

Verifiqué que las claves de certificado estén en la ubicación indicada y que sean claves válidas (no vencidas) para el dominio. La configuración de host virtual anterior fue habilitada por a2ensite ssltest.intra. mod_ssl estaba habilitado, apache2 se reinició (varias veces). Cuando inicio Apache, esta es la entrada en el registro:

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

No existen reglas de firewall que impidan cualquier comunicación a través de 443.

¿Qué me estoy perdiendo?

EDITARAparentemente esto tiene algo que ver con la configuración de la red VirtualBox. Cuando intento acceder al sitio localmente como 127.0.0.1, todo funciona como se esperaba. Cuando intento conectarme (también localmente) a través de la otra interfaz NAT (192.168.56.10), la solicitud se rechaza. ¿Algún consejo sobre cómo resolver eso?

Respuesta1

Sospecho que mi caso es el mismo que el del usuario242156, y muy posiblemente, el del cartel original. El problema era que mis archivos de configuración en sites-enabled/ en realidad no se estaban leyendo, porque apache2.conf de la distribución solo incluía sites-enabled/*.conf y mis archivos no usaban esa extensión, ya que no es necesaria en, por ejemplo, Ubuntu.

Entonces, la solución correcta es cambiar el nombre de ssltest.intra a ssltest.intra.conf, o si eso es realmente inaceptable, modificar apache2.conf para agregar la línea IncludeOptional sites-enabled/*.

Respuesta2

Tuve el mismo problema. En mi situación, la siguiente solución funcionó (Apache 2.2/Debian Squeeze)

Parece que la configuración SSL no se cargó en el momento de la escucha. Después de muchos intentos y errores con la configuración del host virtual, agregué la configuración para SSL en apache2.conf en lugar de en la parte de la directiva del host virtual. Los puertos se configuran en ports.conf. Después de eso mi ssl funcionó correctamente. Parece un problema de secuencia al cargar las partes de configuración.

Se agregó la parte SSL en la parte inferior de apache2.conf.

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/<server certificate filename>
SSLCertificateKeyFile /etc/apache2/ssl/<privatekey filename>
SSLCACertificateFile /etc/apache2/ssl/CaCert.crt

entradas ya presentes en ports.conf

# If you just change the port or add more ports here, you will likely also
 have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
Listen 80
<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
Listen 443
</IfModule>

información relacionada