Quel est un moyen simple de servir http: // localhost en tant que https: // someOtherDomain?

Je gère un serveur Web de développement local pour tester les modifications de code.

Je dois souvent tester mes modifications locales avec des services distants qui peuvent uniquement se connecter en toute sécurité à un autre domaine.

Par exemple, https://external1.com ne parlera qu’à https://someOtherDomain.com , mais je dois tester l’intégration de mes nouvelles modifications de code avec https://external1.com

Bien que j’ai une configuration configurée qui fonctionne, cela semble complexe et a pris un peu de temps pour bien la configurer. Il me semble que beaucoup de développeurs voudraient faire la même chose, alors ma question est la suivante:

Existe-t-il un moyen facile d’envoyer un proxy à mon serveur Web local en tant que https://someOtherDomain.com ?

EDIT: Alors peut-être que cela devrait être demandé de cette façon – Une ligne de commande ou un outil graphique existe-t-il pour que vous puissiez passer un port local et un nom de domaine, et que votre port local soit sécurisé sur https://someOtherDomain.com Création de certificate SSL requirejse? Bien sûr, ce serait bien si le certificate SSL pouvait être remplacé par une configuration si nécessaire, mais par défaut, il fonctionnait automatiquement en utilisant un certificate SSL pré-programmé. Et même si j’utilise Apache, je cherche une solution qui n’utilise pas Apache – elle utilise autre chose. Pourquoi? Parce que je veux que cette solution fonctionne bien avec tout autre serveur Web utilisé par des membres de notre équipe – car nous utilisons tous des stacks différentes et je voudrais pouvoir laisser chacun d’entre nous servir nos sites en toute sécurité sans avoir à les configurer Serveur Web individuellement.

Voici ma configuration actuelle pour prendre mon serveur Web local et le mettre à disposition sur https://www.someOtherDomain.com

Pour le tester localement, j’ai été:

  • modifier mon fichier hosts et append une entrée pour que www.someOtherDomain.com pointe vers mon ordinateur local, qui exécute bien sûr mon serveur de développement. Cela le rend si mon site local est maintenant disponible à http://www.someOtherDomain.com

    127.0.0.1 www.someOtherDomain.com

  • Exécuter Apache avec une configuration SSL Cert et mod_proxy pour redirect toutes les requêtes https vers mon serveur http local, rendant ainsi mon site disponible sur https://www.someOtherDomain.com . Voici ma configuration Apache pour ceci:

     ServerName www.someOtherDomain.com  SetHandler balancer-manager  ProxyPass /balancer-manager ! ProxyPass / balancer://mycluster/  BalancerMember http://localhost route=1  ProxyPass / balancer://mycluster ProxyPassReverse / balancer://mycluster SSLHonorCipherOrder On SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite RC4-SHA:HIGH:!ADH # Rewrite all http requests to https RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

Je lance ceci sur un mac, mais je m’intéresse aussi aux solutions pour linux. J’ai vu plusieurs proxy Man in the Middle qui semblent fonctionner avec certaines configurations … mais je cherche quelque chose de très simple à installer et à exécuter – pas seulement pour moi, mais pour les membres de l’équipe. aussi, comme nous devons tous le faire beaucoup à l’avenir.

REMARQUE IMPORTANTE: mon serveur Web local ne fonctionne pas sur le port 80, bien que je le dise dans l’exemple ci-dessus, pour restr simple. Je comprends que le port 80 sur un mac est un peu spécial, mais je suis très content des solutions qui fonctionnent bien sur tous les ports, sauf le port 80.

Je pense que mitmproxy peut le faire pour vous, au moins sous linux et os-x. Je ne l’ai pas essayé moi-même mais cette question semble montrer comment c’est fait. Ce n’est toujours pas un programme sortingvial cependant.

Il y a cependant d’autres approches que j’ai utilisées:

Le premier est le plus simple, créez une entrée DNS pour develop.mydomain.com qui pointe vers 127.0.0.1 et un seul certificate pour un (sous) domaine où vous contrôlez le DNS. Diffusez ce certificate à tous vos développeurs. Ils devront encore configurer SSL eux-mêmes mais ils n’ont plus besoin de générer de certificates. Il présente l’avantage supplémentaire que tout le monde développe sur https://develop.mydomain.com qui leur permet de partager la configuration. Pour les points bonus, créez une entrée DNS pour * .develop.mydomain.com et un certificate générique et vos développeurs peuvent avoir différents sites (par exemple https://project1.develop.mydomain.com et https: //project2.develop.mydomain .com ) sur la machine locale. (Contrairement à ce que l’Internet vous dit parfois, l’hébergement virtuel basé sur le nom fonctionne bien avec SSL tant que le certificate est valide pour tous les hôtes nommés). Comme le domaine est le même pour tout le monde, vous pouvez envisager d’obtenir un certificate générique valide pour vous débarrasser des avertissements.

Contrairement aux solutions ci-dessous, cela fonctionne même en dehors du réseau de bureau, ce qui peut être pertinent lorsque des personnes travaillent chez elles ou chez le client.

Sur cette base, vous pouvez également créer des entrées DNS pour les adresses IP internes des machines de développement (si celles-ci sont fixes). Cela ajoute un peu de travail, mais cela signifie que le travail en cours d’un développeur peut être atteint par d’autres sur le réseau local, ce qui peut être très pratique pour les démonstrations, les tests sur les appareils mobiles, etc.

Une autre option consiste à configurer un seul ordinateur pour proxy pour tous vos développeurs. Créez une entrée DNS pointant vers l’adresse IP interne de cette boîte sur quelque chose comme * .develop.mydomain.com, un certificate générique correspondant et configurez cette boîte une fois avec le bon certificate. Maintenant, vous pouvez créer un hôte virtuel pour chaque serveur proxy, et encore une fois, tous les sites seront accessibles sur le réseau local, mais le développeur doit avoir des adresses IP fixes (ou des noms d’hôtes ajoutés au DNS via DHCP). Combiné à la capacité d’Apache à inclure tous les fichiers d’un répertoire dans sa configuration, il est sortingvial de créer un script qui ajoute un nouveau site basé sur un modèle. Tout ce qu’il a à faire est d’écrire un nouveau fichier basé sur le sous-domaine demandé plus la destination et de recharger la configuration d’Apache. Cela signifie que quelque chose comme un simple script PHP peut faire ce que vous voulez que l’application fasse.

Si vous souhaitez exposer votre site Web sur votre ordinateur local à Internet, essayez Runscope Passageway , il est facile à configurer et «fonctionne» (à partir de l’expérience).

Une autre alternative est ngrok que j’ai également utilisée, mais cela n’a pas toujours fonctionné pour moi.