Setup (https) SSL sur localhost pour le développement de meteors

Comment créer un certificate SSL auto-signé à utiliser sur un serveur local sous mac 10.9?

J’ai besoin que mon hôte local serve https://localhost

J’utilise l’API linkedin. La fonctionnalité qui nécessite le ssl sur l’hôte local est expliquée ici. https://developer.linkedin.com/documents/exchange-jsapi-tokens-rest-api-oauth-tokens

En bref, linkedin enverra au client un jeton porteur une fois que le client aura autorisé mon application à accéder à leurs données. La bibliothèque JavaScript intégrée de linkedin enverra automatiquement ce cookie à mon serveur / serveur. Cette information de fichier json est utilisée pour l’authentification de l’utilisateur.

Cependant, linkedin n’enverra pas le cookie privé si le serveur n’est pas https.

Solution rapide et facile qui fonctionne en mode dev / prod, en utilisant http-proxy ontop de votre application.

1) Ajouter dans le paquetage tarang:ssl

 meteor add tarang:ssl 

2) Ajoutez votre certificate et votre clé à un répertoire de votre application /private , par exemple /private/key.pem et /private/cert.pem

Puis dans votre / code du serveur

 Meteor.startup(function() { SSLProxy({ port: 6000, //or 443 (normal port/requires sudo) ssl : { key: Assets.getText("key.pem"), cert: Assets.getText("cert.pem"), //Optional CA //Assets.getText("ca.pem") } }); }); 

Lancez ensuite votre application et chargez https://localhost:6000 . Veillez à ne pas confondre vos ports avec https et http car ils sont servis séparément.

Avec cela, je suppose que vous savez comment créer votre propre certificate auto-signé, il existe une multitude de ressources sur la façon de le faire. Juste au cas où voici quelques liens.

Une alternative aux certificates auto-signés: il peut être préférable d’utiliser un certificate officiel pour votre domaine d’applications et d’utiliser /etc/hosts pour créer également une boucle de rappel sur votre ordinateur local . C’est parce qu’il est fastidieux d’avoir à changer de certs entre dev et prod.

Ou vous pouvez simplement utiliser ngrok pour transférer en avant 🙂

1) démarrez votre serveur (c.-à-d. Chez localhost: 3000)

2) démarrez ngrok à partir de la ligne de commande: ./ngrok http 3000

cela devrait vous donner les URL http et https pour y accéder depuis n’importe quel appareil

Une autre solution consiste à utiliser NGINX . Les étapes suivantes sont testées sur Mac El Capitan, en supposant que votre site Web local fonctionne sur le port 3000:

1. Ajoutez un hôte à votre ordinateur local:

Editez votre fichier hôte: vi /etc/hosts

Ajoutez une ligne pour votre domaine dev local: 127.0.0.1 dev.yourdomain.com

dscacheutil -flushcache votre cache dscacheutil -flushcache

Vous devriez maintenant pouvoir accéder à votre site Web local à l’ adresse http://dev.votredomaine.com:3000.

2. Créez un SSL auto-signé comme expliqué ici: http://mac-blog.org.ua/self-signed-ssl-for-nginx/

3. Installez nginx et configurez-le pour mapper le trafic https sur votre site Web local:

brew install nginx

sudo nginx

Vous devriez maintenant pouvoir accéder à http: // localhost: 8080 et obtenir un message Nginx.

Ceci est la configuration par défaut, vous devez donc définir la configuration https:

Editez votre fichier de configuration:

vi /usr/local/etc/nginx/nginx.conf

Décommentez la section du serveur HTTPS et modifiez les lignes suivantes:

server_name dev.yourdomain.com;

Mettez vos certificates que vous venez de créer:

ssl_certificatee /path-to-your-keys/nginx.pem;

ssl_certificatee_key /path-to-your-keys/nginx.key;

Changez la section d’emplacement avec celle-ci:

 location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Client-Verify SUCCESS; proxy_set_header X-Client-DN $ssl_client_s_dn; proxy_set_header X-SSL-Subject $ssl_client_s_dn; proxy_set_header X-SSL-Issuer $ssl_client_i_dn; proxy_read_timeout 1800; proxy_connect_timeout 1800; } 

Redémarrez nginx:

  sudo nginx -s stop sudo nginx 

Et maintenant, vous devriez pouvoir accéder à https://dev.votredomaine.com