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