Comment configurer SSL dans Apache?

10

J'ai installé apache dans RHEL 6. Tout fonctionne bien. Quelles modifications et configurations doivent être effectuées pour utiliser https: // localhost: 443 / .

Si je change le "Listen 80" en 443, il lance une erreur de connexion SSL

"Erreur 107 (net :: ERR_SSL_PROTOCOL_ERROR): erreur de protocole SSL."

monu
la source

Réponses:

13

Si vous utilisez apache2, alors vous devez faire ce qui suit:

Étape 1: utilisez OpenSSL pour produire les clés utilisées pour sécuriser votre site. Ces clés sont utilisées lors du chiffrement et du déchiffrement du trafic vers votre site sécurisé.

$ openssl genrsa -out mydomain.key 1024

Cette commande créera une clé privée 1024 bits et la placera dans le fichier mydomain.key.

Étape 2: Générez votre propre certificat.

$ openssl req -new -key mydomain.key -x509 -out mydomain.crt

Étape 3: Conservez la clé privée dans le répertoire /etc/apache2/ssl.key/et le certificat dans le répertoire /etc/apache2/ssl.crt/.

Remarque: Le ssl.keyrépertoire ne doit être lisible que par root.

Étape 4: Maintenant, vous devez modifier le httpd.conffichier /etc/apache2.

Maintenant, ce fichier doit inclure un contenu comme celui-ci:

NameVirtualHost *:80
NameVirtualHost *:443
Listen 443

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs/mydomain
ServerName www.mydomain.com
ServerAlias mydomain.com
</VirtualHost>


<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs/mydomain-secure
ServerName mail.mydomain.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/mydomain.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/mydomain.key
</VirtualHost>


<Directory /srv/www/htdocs/mydomain-secure>
SSLRequireSSL
</Directory>


<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs/mydomain
ServerName mail.mydomain.com
RedirectMatch permanent (/.*) https://mail.mydomain.com$1
</VirtualHost>
pradeepchhetri
la source
Les trois premières lignes ne sont pas nécessaires. 1. NameVirtualHostest obsolète et sera supprimé dans les futures versions d'Apache. C'est actuellement déjà un no-op. 2. Listen 443peut causer des problèmes si apache est déjà configuré pour écouter sur le port 443, ce qui est déjà le cas sur de nombreuses distributions linux. Ajoutez uniquement si vous êtes sûr que cette ligne n'est pas configurée ailleurs.
lanoxx
3

Ne changez Listen 80pas 443en /etc/httpd/conf/httpd.conf. SSL est configuré dans /etc/httpd/conf.d/ssl.conf. Sur RHEL 6, SSL est activé et écoute par défaut avec un certificat auto-signé.

Vous pouvez accéder au site par défaut en utilisant SSL simplement en naviguant sur https://localhost(vous n'avez pas besoin d'ajouter le port à la fin de l'URL).

Si vous souhaitez transférer toutes les requêtes HTTP vers HTTPS (ce que je crois que vous essayez d'atteindre), vous pouvez soit ajouter une redirection permanente, soit utiliser le module Apache mod_rewrite.

Le moyen le plus simple et le plus sûr est de mettre en place une redirection permanente. Activez les hôtes virtuels nommés et ajoutez une Redirectdirective à VirtualHost dans /etc/httpd/conf/httpd.conf.

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName localhost
   Redirect permanent / https://localhost
</VirtualHost>

À l'aide de mod_rewrite, vous créez également un hôte virtuel nommé. Ce n'est pas la méthode recommandée, mais cela fonctionnera.

NameVirtualHost *:80
<VirtualHost *:80>
   # Enable the Rewrite engine
   RewriteEngine On
   # Make sure the connection is not already HTTPS
   RewriteCond %{HTTPS} !=on
   # This rewrites the URL and forwards to https
   RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

Si vous souhaitez désactiver SSL, mettez ces lignes en commentaire /etc/httpd/conf.d/ssl.confet redémarrez Apache.

LoadModule ssl_module modules/mod_ssl.so
Listen 443
George M
la source
En fait, si vous ajoutez le package mod_ssl pour RHEL6, il crée un /etc/httpd/conf.d/ssl.conf, qui charge le module et configure <VirtualHost _default_:443>, avec tous les paramètres nécessaires, chacun avec des commentaires. Le mod_sslpackage n'est pas installé automatiquement si vous avez installé le httpdpackage.
jsbillings
1
Je voudrais ajouter une seule chose à votre réécriture: utilisez [R=301,L]au lieu de simplement [R,L], de cette façon, la réécriture utilise l' option permanente des codes d'état HTTP 3xx .
dcestari