Servir tout le contenu via HTTPS, quels que soient les paramètres du serveur Web


1

J'ai un serveur fonctionnant sur le port 80 sur un Mac.

J'aimerais également que le même contenu soit servi sur le port 80 sur le port 443.

J'aimerais savoir s'il existe un moyen de ligne de commande ou un outil facile à utiliser qui me permettrait de prendre n'importe quel port non SSL, de le chiffrer et de le servir sur un port chiffré SSL, quel que soit le serveur qui diffuse le contenu sur le port. 80 .

EDIT: Je n'ai pas de contrôle sur la configuration du serveur pour ce qui sert le contenu sur le port 80. Mais j'aimerais voir le même contenu servi sur le port 443. Comment puis-je faire cela?

Je soupçonne que cela peut être fait avec SSH (transfert de port local), mais je n’ai pas trouvé quoi que ce soit qui semble fonctionner. Je suis ouvert à l'utilisation de tout outil opensource pour ce faire ... Apache, ssh, iptables ... tout ce qui fonctionne!


Notez que SSL, TLS et HTTPS n’ont rien à voir avec SSH.
Bruno le

Je n'ai pas fait beaucoup de transfert de port moi-même, mais par SSH dans cette question, je voulais dire "sur le serveur, utilisez SSH pour effectuer une redirection de port local du port 80 au port 443". Ainsi, le même contenu serait disponible sur les deux ports. Je pensais que cette partie serait possible, mais le chiffrer correctement était la partie dont je n’étais pas sûr. Merci pour les commentaires!
Brad Parks

L'utilisation de SSH pour transférer le port 80 sur le port 443 ne l'obligera pas à utiliser SSL / TLS ou HTTPS. SSH est un protocole complètement différent de SSL / TLS et HTTPS est HTTP via SSL / TLS. En pointant votre navigateur via https://le port 443 sur quelque chose qui écoute SSH, cela ne fonctionnera tout simplement pas. (Le fait qu'OpenSSH s'appuie sur OpenSSL ne signifie pas que SSH s'appuie sur SSL, c'est simplement qu'OpenSSL est une bibliothèque de cryptographie qui en fait bien plus que SSL / TLS.)
Bruno

Oui, je comprends ça… c'est pourquoi j'ai écrit: "Le chiffrer correctement était la partie dont je n'étais pas sûr." Merci pour votre réponse détaillée. Je suis sûr que cela ajoutera de la valeur à la question!
Brad Parks

Réponses:


3

Vous pouvez quelque chose devant le serveur qui traduit de SSL en TCP, par exemple Stunnel ou un logiciel similaire.


Ouais! Cela a fonctionné ... Merci .... j'ai installé stunnel en utilisant "brew install stunnel", puis j'ai utilisé ce dépôt Git pour quelques exemples de scripts d'utilisation de stunnel ( github.com/mostlygeek/stunnel-ssl-proxy ). Ensuite, j'ai modifié le fichier stunnel.cnf et modifié mes ports en "accept = 443" et "connect = 80". Ensuite, pour démarrer le serveur, exécutez "sudo ./start-server.sh"
Brad Parks

1

Ceci est géré côté serveur, pas via le transfert de port. Vous devez simplement activer SSL, qui vous permettra ensuite d’obtenir du contenu via HTTPS sur le port 443.

Instructions pour le faire pour Apache:

http://httpd.apache.org/docs/current/ssl/ssl_howto.html


Hey! merci pour les commentaires ... mais je me demande s'il est possible de le faire, quel que soit le serveur utilisé .... Il est donc possible de serveur pour le trafic non chiffré du port 80 sur le port 443 .... Ce serait toujours le cas le même serveur, mais pas configuré par serveur. Ainsi, par exemple, si je basculais le backend vers Lighttpd, cela fonctionnerait toujours et le contenu continuerait de fonctionner sur 443 sans que je sois obligé de déterminer comment le faire pour Lighttpd.
Brad Parks

1
Nan . . . la décision de savoir quoi servir est gérée du côté du serveur. Si votre serveur ne fournit pas le protocole HTTPS, le client ne peut pas obtenir le contenu HTTPS. . .
ernie

Je pourrais exécuter le programme sur la même machine .... qui serait gérée côté serveur .... par un autre serveur (par exemple, nginx ou apache)
Brad Parks

0

Cela peut aussi être fait en utilisant Apache et mod proxy .... J'ai réussi à le faire en utilisant XAMPP, et le fichier httpd.conf par défaut fourni avec XAMPP en incluant ce qui suit au bas de leur fichier "etc / httpd.conf"

ServerName localhost

ProxyPass / balancer://mycluster/ stickysession=JSESSIONID|jsessionid

<Proxy balancer://mycluster>
   BalancerMember http://localhost route=myroute
</Proxy>

SSLHonorCipherOrder On
SSLProtocol -ALL +SSLv3 +TLSv1
SSLCipherSuite RC4-SHA:HIGH:!ADH

et commentant les 2 dernières lignes de ce fichier, celles qui

  # Include etc/extra/httpd-xampp.conf
  # Include "/Applications/XAMPP/xamppfiles/apache2/conf/httpd.conf"

et changer le port par défaut qu'apache servait de 80 à autre (par exemple 800)

Listen 800

Je suis sûr que cela peut probablement être fait avec moins de configuration que cela, mais cela a fonctionné pour moi ;-)

Remarque: si vous souhaitez que toutes les demandes http soient réécrites en https (et que vous n'ayez pas effectué la ligne Listen 800 ci-dessus), vous pouvez éventuellement effectuer les opérations suivantes à l'aide du mod rewrite:

  # Rewrite all http requests to https
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.