it-swarm-es.com

No se puede hacer que SSL funcione con Apache2 en el servidor Ubuntu, el puerto 443 parece no estar abierto

Tengo acceso ssh a un servidor donde quiero alojar mi sitio web a través de https. Estoy usando Apache, y hasta ahora, la variante http del sitio funciona a la perfección.

Es cuando se intenta SSL que las cosas no funcionan. No puedo cargar el sitio https en absoluto. Creo que he reducido el problema al hecho de que, para el mundo exterior, parece que el puerto 443 está cerrado, como se puede ver a continuación usando nmap.

[email protected]:~$ nmap domain.com

Starting Nmap 6.47 ( http://nmap.org ) at 2016-03-11 15:13 GMT
Nmap scan report for domain.com (ip.is.here.yes)
Host is up (0.0097s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 Host up) scanned in 0.13 seconds

Pero si ejecuto, por ejemplo, nmap en el servidor a través de ssh, parece que 443 está abierto,

[email protected]:~$ nmap domain.com

Starting Nmap 6.40 ( http://nmap.org ) at 2016-03-11 15:12 GMT
Nmap scan report for domain.com (ip.is.here.yes)
Host is up (0.00036s latency).
rDNS record for ip.is.here.yes: domain.domain.com
Not shown: 997 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 Host up) scanned in 0.05 seconds

Más detalles

Parece que Apache definitivamente está escuchando en 443,

[email protected]:~$ netstat -ln | grep -E ':80|443'
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN

No estaría preguntando si no estuviera realmente perplejo. Intenté abrir el puerto usando iptables, pero eso tampoco pareció hacer nada, y ufw está deshabilitado. Aquí está el iptables --list actual, pero intenté algunas otras configuraciones de eso también en vano.

[email protected]:~$ Sudo iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere 

Ah y por último pero no menos importante, aquí está el archivo mysite.conf que estoy usando. Y para su información, esta configuración sirvió correctamente https cuando se usaba en una red local usando una computadora portátil como punto de acceso.

<VirtualHost *:80>
    <If "req('Host') == '127.0.0.1'" >
        Redirect "/" "https://local.domain.com/"
    </If>
    <ElseIf "req('Host') == 'localhost'" >
        Redirect "/" "https://local.domain.com/"
    </ElseIf>
    <ElseIf "req('Host') == 'domain.com'" >
        #Redirect "/" "https://domain.com/"
    </ElseIf>
    <Else>
            Redirect "/" "https://ap.domain.com/"
    </Else>
</VirtualHost>

IncludeOptional path-to/Local/etc/Apache2/vhosts/*.conf
#NameVirtualHost *:443 

<VirtualHost *:443>
    ServerAdmin [email protected]
    <IfModule mod_ssl.c>
        SSLEngine on
        SSLCertificateFile path-to-cert.crt
        SSLCertificateKeyFile path-to-key.key
    </IfModule>     

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
    </Directory>

    BrowserMatch "MSIE [2-6]" \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

    LogLevel info
    ErrorLog path-to/Local/Log/error.log
    CustomLog path-to/Local/Log/access.log combined

</VirtualHost>

<IfModule mpm_worker_module>
    ServerLimit          40
    StartServers          2
    MaxRequestWorkers   1000
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

Y todo el contenido de los archivos 'IncludeOptional/*. Conf' que puede ver en mysite.conf arriba,

WSGIDaemonProcess ourapp user=matthias group=matthias processes=2 threads=5
WSGIProcessGroup ourapp
WSGIPassAuthorization On

# The WSGI directory
<Directory path-to/Local/WSGI>
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
    Allow from all
</Directory>

# The Backend Stuff
WSGIScriptAlias /generate_204 path-to/Local/WSGI/backend_204.wsgi
# The Backend Stuff
WSGIScriptAlias /backend path-to/Local/WSGI/backend_db.wsgi
DocumentRoot path-to/website/app

<Directory path-to/website/app>
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
    Allow from all
</Directory>

Alias /rootCA.pem path-to/Local/etc/ssl/certs/rootCA.pem

<Directory path-to/Local/etc/ssl/certs>
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
    Allow from all
</Directory>

¿Tienes idea de lo que está pasando?

1
Matthias

Resulta que fue mi ISP el que no abrió el puerto 443. Después de que se corrigió, el sitio funcionó como se esperaba.

0
Matthias