Installer un certificat SSL sur Apache Mod_SSL

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.

Remarque: Depuis Apache 2.4.8, la pratique consistant à conserver le certificat de serveur et la chaîne de certificats intermédiaires dans des fichiers séparés est obsolète. Les méthodes actuelles et héritées sont détaillées dans les onglets cliquables ci-dessous.
Apache 2.4.8 ou supérieurApache 2.4.7 ou inférieur

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:

Nginx

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, et SSLCertificateKeyFile 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.

Essais

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.

Merci d'avoir choisi SSL.com! Si vous avez des questions, veuillez nous contacter par e-mail à Support@SSL.com, appel 1-877-SSL-SECUREou cliquez simplement sur le lien de discussion en bas à droite de cette page.

Abonnez-vous à la newsletter de SSL.com

Ne manquez pas les nouveaux articles et mises à jour de SSL.com

Restez informé et en sécurité

SSL.com est un leader mondial de la cybersécurité, PKI et les certificats numériques. Inscrivez-vous pour recevoir les dernières nouvelles de l'industrie, des conseils et des annonces de produits de SSL.com.

Nous aimerions recevoir vos commentaires

Répondez à notre enquête et faites-nous part de votre avis sur votre récent achat.