2017-03-25 1 views
2

Ce que j'ai fait

J'utilisé certbot pour certifier que je possède mon domaine, qui a généré plusieurs fichiers .pem. Les certificats sont énumérés ici:Comment configurer HTTPS à l'aide Crypter Lets, nœud et Express 4

J'ai trouvé this post qui a du sens et correspond à toutes les autres informations que je reçois de Google, mais quand je fais cela et exécutez le nœud, je ne peux pas me connecter à mon site en utilisant https . Http fonctionne bien comme il l'a toujours fait.

Mon serveur est express.js + node.js et je n'utilise pas de proxy inverse comme nginx. Il fonctionne sur Ubuntu sur Google Cloud Platform.

Le code correspondant est:

var http = require('http'); 
var https = require('https'); 
var privateKey = fs.readFileSync('/etc/letsencrypt/live/troywolters.com/privkey.pem', 'utf8'); 
var certificate = fs.readFileSync('/etc/letsencrypt/live/troywolters.com/fullchain.pem', 'utf8'); 
var credentials = {key: privateKey, cert: certificate}; 
var app = express(); 

// Lots of other express stuff (app.use()'s) 

var httpServer = http.createServer(app); 
var httpsServer = https.createServer(credentials, app); 
httpServer.listen(80); 
httpsServer.listen(443); 

Ce qui ne fonctionne pas

Lorsque je tente de me connecter à mon site en utilisant https://troywolters.com les temps de connexion dehors et rien ne se passe. Qu'est-ce que je fais mal?

+0

Lorsque vous êtes connecté à votre serveur, pouvez-vous faire une demande locale au port 443 pour vous assurer que votre application node.js gère correctement la demande? Si c'est le cas, vous avez probablement un problème/port iptable bloqué. Si ce n'est pas le cas, il y a un problème avec votre application. – Darkrum

+0

@Darkrum Désolé, comment je ferais ça? J'ai essayé de regarder 'ping' mais il semble ne pas faire https, seulement ECHO, et curl se bloque juste quand je fais curl --request https: // troywolters.com'. Quand je fais 'curl --request https: // 127.0.0.1' bien qu'il dise: curl: (51) SSL: le nom du sujet du certificat (troywolters.com) ne correspond pas au nom d'hôte cible '127.0.0.1' alors peut-être que c'est un bon signe? – TW80000

Répondre

0

La réponse au problème était que ma plate-forme d'hébergement (Google Cloud Platform) n'autorisait pas le port 443 via le pare-feu dans la configuration par défaut. Courir

gcloud compute firewall-rules create allow-https --description "Incoming https allowed." --allow tcp:443 

trafic entrant autorisé par le port 443 et résolu le problème.

Merci à Michael Hampton de Server Fault pour le pourboire.