Configurer Apache avec SSL
Les instructions suivantes supposent que vous souhaitez exécuter à la fois un serveur sécurisé (sur le port 443
) et un serveur normal (sur le port 80
). Tout d'abord, vous devez configurer le serveur pour écouter sur les deux ports. Soit modifier /etc/apache2/ports.conf
(dans Debian; cela est inclus dans apache2.conf
) ou modifier /etc/apache2/apache2.conf
directement pour inclure les lignes:
Écouter 80 Écouter 443
Ensuite, éditez /etc/apache2/sites-enabled/yoursite
pour utiliser les paramètres SSL. Séparer les paramètres de serveur réguliers et sécurisés à l'aide de VirtualHosts est l'option la plus simple en termes de maintenabilité. Toute configuration en dehors des sections VirtualHosts (comme la configuration de ServerAdmin) s'appliquera aux deux (et à tout autre) VirtualHosts.
Les versions d'Apache 2.4.8 et supérieures s'attendent à ce que votre certificat de serveur soit concaténé avec tous les certificats intermédiaires dans un seul fichier. Pour télécharger un fichier chaîné depuis SSL.com, choisissez le Nginx
lien de téléchargement dans votre compte de portail:
Alternativement, vous pouvez concaténer votre certificat existant et vos fichiers intermédiaires avec une commande comme la suivante:
$ cat /etc/ssl/private/ca-bundle-client.crt >> /etc/ssl/private/yourdomain.crt
Ajoutez la section suivante à votre fichier de configuration:
# ================================================== # SSL /TLS paramètres # ================================================= = NameVirtualHost *: 443 DocumentRoot "/ var / www / yoursite" SSLEngine sur SSLCertificateFile /etc/ssl/private/yourdomain.chained.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key
Quelques notes sur cette configuration:
SSLEngine
doit être activé pour que le serveur utilise SSL.DocumentRoot
définit le répertoire racine de cet hôte virtuel. Cela signifie que vous pouvez séparer entièrement le contenu sécurisé du contenu normal.SSLCertificateFile
doit être défini à l'emplacement où vous placez le fichier avec votre certificat de serveur et votre chaîne intermédiaire.SSLCertificateKeyFile
doit être défini à l'emplacement où vous placez votre fichier de clé privée.
Ajoutez la section suivante à votre fichier de configuration:
# ================================================== # SSL /TLS paramètres # ================================================= = NameVirtualHost *: 443 DocumentRoot "/ var / www / yoursite" SSLEngine sur SSLCertificateFile /etc/ssl/private/yourdomain.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key SSLCertificateChainFile / etc / ssl / bundle / private client.crt
Quelques notes sur cette configuration:
SSLEngine
doit être activé pour que le serveur utilise SSL.DocumentRoot
définit le répertoire racine de cet hôte virtuel. Cela signifie que vous pouvez séparer entièrement le contenu sécurisé du contenu normal.SSLCertificateFile, SSLCertificateChainFile,
etSSLCertificateKeyFile
doit être défini aux emplacements où vous placez votre certificat, vos fichiers de clé intermédiaire et privée, respectivement.
Pour exécuter le serveur normal sur le port 80, ajoutez la section suivante au fichier de configuration:
NameVirtualHost *: 80 DocumentRoot "/ var / www / yoursite" # Configuration du répertoire spécifique à l'hôte, options, etc. # La plupart de ces options sont susceptibles d'être définies en dehors des # sections VirtualHosts.
Après avoir enregistré le fichier de configuration modifié, redémarrez le serveur Web. Si vous avez utilisé une phrase secrète lors de la génération de votre certificat, vous devrez l'entrer en cas de contestation.
Contrôle de qualité
Créez une page index.html de base où se trouve le répertoire racine de votre serveur Web, si vous n'y avez pas déjà du contenu.
Pointez ensuite votre navigateur Web sur https://www.yoursite.com
. Vous devriez voir une connexion SSL ouverte et la page livrée. Si vous utilisez un certificat auto-signé, votre navigateur affichera une alerte vous avertissant que l'identité du serveur ne peut pas être vérifiée. Vous pouvez choisir d'afficher et d'accepter le certificat. Si vous utilisez un certificat externe, tout devrait se passer sans intervention.
Assurez-vous également que vous ne pouvez pas accéder au contenu protégé en utilisant http: //. Si vous essayez, vous devriez recevoir un message d'erreur.
Dépannage
Si cela ne fonctionne pas comme prévu, vérifiez d'abord que votre serveur fonctionne réellement, en utilisant ps -a | grep apache
. Si cela ne renvoie rien, essayez de le redémarrer et recherchez les messages d'erreur sur le terminal.
Vérifiez également que les autorisations sur vos fichiers de clés et de certificats sont correctement définies (voir ci-dessus), ainsi que les autorisations sur votre fichier HTML de test et son répertoire parent.
Ensuite, vérifiez les journaux. Vous devez vérifier à la fois les journaux du serveur principal et les journaux SSL que vous avez configurés dans votre fichier de configuration ci-dessus. Si vous n'obtenez rien d'utile, essayez de changer la valeur LogLevel dans le fichier de configuration Apache2 sur «debug», redémarrez Apache2 et testez à nouveau. Cela devrait donner plus de données de fichier journal.
Si vous exécutez également un serveur Web standard sur le port 80, essayez de récupérer une page de test via http: // plutôt que https: // pour vous aider à identifier si le problème vient du serveur Web ou de la connexion SSL. Notez que dans la configuration ci-dessus, le répertoire racine du serveur Web est différent pour http: // et https: //, vous ne pourrez donc pas (ou ne devriez pas!) Accéder au même contenu. Si votre page de test dans le répertoire racine http: // fonctionne correctement, mais pas votre page de test dans le répertoire racine https: //, cela peut vous aider à identifier le problème.
Si le problème est la connexion SSL, un outil utile est s_client
, qui est un outil de diagnostic pour le dépannage TLS/ Connexions SSL. L'utilisation de base est: /usr/bin/openssl s_client -connect localhost:443
. Il existe également de nombreuses autres options, pour lesquelles vous pouvez consulter la documentation. Si vous obtenez des messages d'erreur, cela devrait vous aider à localiser le problème.