lier le port ssl apache avec un port différent avec le même port openssl 443

8

J'ai un serveur (base linux) dans lequel j'ai installé dotcms et il fonctionne sur le port 80 et openssl est sur le port 443. les deux sont démarrés en cours d'exécution. Récemment, j'ai installé apache sur mon serveur. et quand j'ai commencé apache, il est resté bloqué car le port ssl par défaut sur apache est 443 et apache est 80, les deux sont déjà en cours d'exécution. Juste pour ma tâche, je n'ai commencé qu'apache sans SSL sur le port 90. mais je veux aussi démarrer SSL avec Apache sur un port différent. Est-il possible de lier apache ssl avec le même openssl?

J'ai besoin de mes dotcms par défaut dans le processus en cours, je ne peux pas l'arrêter dans tous les cas, je ne peux redémarrer mon service dotcms que si un démarrage apache est requis. mais j'ai besoin de dotcms et d'apache pour fonctionner en parallèle.

voir l'image sur ce lien (en raison de moins de réputation, je n'ai pas pu télécharger l'image) http://developers89.byethost14.com/images/ssl.png

Waqas Ahmed
la source
1
Fournissez des informations sous forme de texte plutôt que d'images (lisibles, consultables, etc.).
Karl Richter

Réponses:

17

Oui, il est possible de lier Apache à différents ports tout en utilisant SSL.

Remplacez les Listendirectives dans votre configuration apache. La configuration doit contenir une ligne comme

Listen 80
Listen 443

Apache écoutera sur les ports définis avec ces options de configuration. Remplacez-les et Apache écoutera sur un autre port.

Cependant, vous devez toujours dire à Apache quoi servir sur les ports ci-dessus. Supposons que vous souhaitiez qu'Apache commence à écouter sur le port 8080 (ordinaire) et 4433 (ssl). Ensuite, vous devez remplacer les directives Listen par

Listen 8080
Listen 4433

Après cela, définissez deux VirtualHosts sur ces ports comme ceci:

NameVirtualHost 0.0.0.0:8080
NameVirtualHost 0.0.0.0:4433

<VirtualHost 0.0.0.0:8080>
    ServerName the.server.name
    ServerAlias *
    DocumentRoot /var/www/plain
</VirtualHost>

<VirtualHost 0.0.0.0:4433>
    ServerName the.server.name
    ServerAlias *
    DocumentRoot /var/www/ssl

    SSLEngine On
    SSLCertificateFile /the/certificate/file
    SSLCertificateKeyFile /the/key/file
</VirtualHost>

Si vous n'avez plus de définition VirtualHost, vous n'avez pas besoin d'inclure la ServerAliasdirective (ou la ServerName, d'ailleurs).

Si vous redémarrez Apache, il écoutera sur 8080 pour les connexions non chiffrées et sur le port 4433 pour SSL. Assurez-vous de ne pas avoir d’ancienne définition de VirtualHost contenant le mauvais numéro de port.

Lacek
la source
Merci, le port est activé mais lorsque j'essaie mydomain.com:4433, il donne l'erreur "Erreur de connexion SSL"Unable to make a secure connection to the server. This may be a problem with the server, or it may be requiring a client authentication certificate that you don't have.
Waqas Ahmed
quand j'essaye d'activer le module ssl par cette commande sur linux a2enmod ssl. cela donne une erreur: * Restarting web server apache2 ... waiting (98)Address already in use: make_sock: could not bind to address [::]:4433et lorsque je désactive ce module et redémarre le port apache 4433 est en cours d'exécution et fait face à une erreur mise en évidence dans le commentaire ci-dessus
Waqas Ahmed
Arrêtez le serveur Web apache et assurez-vous qu'aucune instance Apache ne reste en cours d'exécution. Vérifiez si les ports sont ouverts avec la commande "netstat -napt | grep 4433" (il ne devrait pas y avoir de sortie). Exécutez ensuite a2enmod pour activer le module SSL. Assurez-vous également que les directives "Listen" n'apparaissent dans les fichiers de configuration qu'une seule fois (par exemple, la deuxième directive "Listen 4433" entraînera une erreur).
Lacek
Avec Apache 2.4.10 Invalid ServerName "*" use ServerAlias to set multiple server names.
j'obtiens
J'ai mis à jour la réponse, donc la configuration fonctionnera également avec Apache 2.4. Merci de l'avoir signalé.
Lacek