web-dev-qa-db-fra.com

Impossible de faire fonctionner SSL avec Apache2 sur le serveur Ubuntu, le port 443 ne semble pas être ouvert

J'ai un accès SSH à un serveur sur lequel je souhaite héberger mon site Web via https. J'utilise Apache, et jusqu'à présent, la variante http du site fonctionne parfaitement.

C'est en essayant SSL que les choses ne fonctionnent pas. Je ne peux pas du tout charger le site https. Je pense avoir limité le problème au fait que, pour le monde extérieur, il semble que le port 443 soit fermé, comme on peut le voir ci-dessous avec nmap.

matthias@outsideworld:~$ 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

Mais si je lance par exemple nmap sur le serveur lui-même via ssh, il semblerait que 443 soit ouvert,

matthias@server:~$ 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

Plus de détails

Il semble qu'Apache écoute définitivement le 443,

matthias@server:~$ 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

Je ne demanderais pas si je ne suis pas vraiment perplexe. J'ai essayé d'ouvrir le port avec iptables, mais cela ne semblait rien faire non plus, et ufw est désactivé. Voici le iptables --list actuel, mais j’ai essayé d’autres configurations de cela en vain.

matthias@server:~$ 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 et dernier mais non le moindre, voici le fichier mysite.conf que j'utilise. Et fyi cette configuration servait correctement https lorsqu’elle est utilisée sur un réseau local en utilisant un ordinateur portable comme point d’accès.

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

Et tout le contenu des fichiers 'IncludeOptional/*. Conf' que vous pouvez voir dans mysite.conf ci-dessus,

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>

Une idée de ce qui se passe?

1
Matthias

Il s’est avéré que c’était bien mon fournisseur de services Internet qui n’avait pas ouvert le port 443. Une fois le problème corrigé, le site a fonctionné comme prévu.

0
Matthias