J'essaie de configurer SSL sur mon serveur Web Apache2, mais il semble que cela ne fonctionne pas du tout.
J'ai suivi un tutoriel pour créer des fichiers cert avec openssl et configuré le /etc/Apache2/sites-available/default-ssl.conf
correctement.
Chaque fois que j'essaie d'ouvrir mon site Web avec https, mon navigateur refuse de se connecter en raison de problèmes de sécurité. Il indique que je n'ai pas configuré correctement mon site Web.
Dans mon /var/log/Apache2/error.log
Je reçois des avertissements indiquant que mon certificat de serveur n'inclut pas d'ID correspondant au nom du serveur.
[Mon Apr 10 11:03:24.041813 2017] [mpm_prefork:notice] [pid 1222] AH00169: caught SIGTERM, shutting down
[Mon Apr 10 11:03:30.566578 2017] [ssl:warn] [pid 661] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.579088 2017] [ssl:warn] [pid 1194] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.592958 2017] [mpm_prefork:notice] [pid 1194] AH00163: Apache/2.4.25 (Raspbian) OpenSSL/1.0.2k configured -- resuming normal operations
[Mon Apr 10 11:03:31.593136 2017] [core:notice] [pid 1194] AH00094: Command line: '/usr/sbin/Apache2'
Avez-vous des idées sur la façon de résoudre ce problème? Merci à tous!
D'accord, j'ai remarqué que ce message est vu assez souvent récemment et il semble donc que beaucoup de gens sont confrontés au même problème que moi. Si c'est le cas, cela pourrait vous aider.
J'ai suivi un tutoriel simple étape par étape pour créer une certification SSL pour mon serveur Web. Comme tant de tutoriels, le résultat du tutoriel que j'ai suivi était un certificat auto-signé utilisant OpenSSL. Oui auto-signé , c'était le problème. Le navigateur n'a pas pu faire confiance au serveur en raison de son certificat signé par lui-même. Et bien je ne ferais pas non plus ...
Un certificat doit être signé par une autorité de certification (CA) de confiance externe. Je suis donc tombé sur Let's Encrypt qui fait tout le travail pour vous et est encore plus facile à configurer et le meilleur est: c'est absolument gratuit.
1) Supprimez vos anciens fichiers cert SSL que vous avez créés en utilisant OpenSSL
2) Ouvrez les backports pour obtenir le client certbot sur Debian. Vous devez savoir que cela ouvrira un trou pour les logiciels inachevés! Installez uniquement les packages lorsque vous savez ce que vous faites.
echo 'deb http://ftp.debian.org/debian jessie-backports main' | Sudo tee /etc/apt/sources.list.d/backports.list
3) Mettez à jour votre système Linux
Sudo apt-get update
4) Installez certbot
Sudo apt-get install python-certbot-Apache -t jessie-backports
5) Configurer Apache ServerName et ServerAlias
Sudo nano /etc/Apache2/sites-available/000-default.conf
6) Modifier le fichier de configuration Apache
<VirtualHost *:80>
. . .
ServerName example.com
ServerAlias www.example.com
. . .
</VirtualHost>
7) Vérifiez la syntaxe correcte
Sudo Apache2ctl configtest
8) Si le fichier de configuration semble correct, redémarrez le serveur Apache
Sudo systemctl restart Apache2
9) Configurez un certificat à l'aide de certbot et suivez les instructions à l'écran.
Sudo certbot --Apache
Tous les certificats de Let's Encrypt sont valables 3 mois. Pour renouveler le, vous pouvez exécuter manuellement
Sudo certbot renew
Ou automatisez ce service en tant que tâche cron
Sudo crontab -e
et entrez la ligne suivante pour invoquer un renouvellement tous les lundis à 2h30.
. . .
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
Vous pouvez suivre un tutoriel plus détaillé ici: https://www.digitalocean.com/community/tutorials/how-to-secure-Apache-with-let-s-encrypt-on-debian-8 =
Si vous ne voyez aucune autre erreur SSL et si vous avez essayé de définir "débogage LogLevel" dans le fichier httpd.conf, ce message d'erreur peut également suggérer que "Listen 443" est manquant dans le fichier httpd.conf.
Dans mon cas, j'ai résolu ce problème en le remplaçant dans mon fichier de configuration Apache ssl pour chaque domaine concerné:
ServerName mydomain.com
ServerAlias www.mydomain.com
par :
ServerName www.mydomain.com
ServerAlias mydomain.com
Parce que mon certificat est pour "www.mydomain.com" et non pour "mydomain.com"
fichier Apache complet:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName www.mydomain.com
ServerAlias mydomain.com
DocumentRoot /home/mydomain.com/public_html
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|ico|png)$ \ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|Zip|bz2|sit|rar)$ \no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
<Directory />
Options +FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/mydomain.com/public_html>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${Apache_LOG_DIR}/error.log
LogLevel warn
SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-Apache.conf
</VirtualHost>
</IfModule>
Ce ne sont pas des erreurs - ce sont des avertissements. Il est tout à fait possible d'exécuter mod_ssl avec un certificat qui ne correspond pas aux noms de serveur définis tant que vous avez défini un hôte SSL par défaut et que le nom commun sur le certificat correspond au nom d'hôte utilisé par les clients pour se connecter.
Ce dernier ne semble pas être vrai dans votre cas. Comme Jacob le dit, vous devez spécifier le nom d'hôte correct comme nom commun (ou un alias) lorsque vous créez un CSR.
Pour voir quel (s) nom (s) figure actuellement sur le certificat:
openssl s_client -showcerts -connect ${HOSTNAME}:443
Si plusieurs certificats sont installés sur la machine et servis sur la même adresse IP, alors:
openssl s_client -showcerts -connect ${HOSTIP}:443 -servername ${HOSTNAME}
(où les valeurs $ {...} sont des espaces réservés que vous devez remplacer par les valeurs pertinentes).
J'ai rencontré ce problème récemment, lorsque mon certificat auto-signé a expiré. J'ai recherché sur Google et copié la commande de création d'un nouveau certificat à partir d'un site Web.
Sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/Apache-selfsigned.key -out /etc/Apache2/ssl/Apache.crt
Dans mon fichier de configuration Apache: /etc/Apache2/sites-available/default-ssl.conf. Le fichier de certificat et le fichier de clé font référence au nom de fichier suivant.
SSLCertificateFile /etc/Apache2/ssl/Apache.crt
SSLCertificateKeyFile /etc/Apache2/ssl/Apache.key
Par conséquent, l'erreur vue ici dans mon cas était plus facile à corriger, simplement en fournissant l'emplacement correct du fichier de clé de certificat lors de la création du certificat SSL.
Voici donc la commande que j'aurais dû utiliser et taper correctement.
Sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/Apache2/ssl/Apache.key -out /etc/Apache2/ssl/Apache.crt
J'ai trouvé une solution qui fonctionne pour moi SSL ON CENTOS 8
nano /etc/httpd/conf.d/ssl.conf
ssl.conf
fichierSSLCertificateFile /etc/letsencrypt/live/radiolatina.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/radiolatina.ru/privkey.pem
Nous avons dû ajouter le ServerName et ServerAlias au fichier default-ssl, pas seulement le fichier conf pour le domaine spécifique.
Cela a éliminé l'erreur embêtante pour nous.