Heroku + Cloudflare complètement libre SSL

tentative d'obtenir complètement libre SSL sur Heroku en utilisant Cloudflares nouveau libre Universal SSL

lire cet article: http://mikecoutermarsh.com/adding-ssl-to-heroku-with-cloudflare/

ce qui semble suggérer que C'est possible maintenant que Cloudflare offre SSL gratuitement.

Les étapes que j'ai pris:

  • configurer mes DNS avec Cloudflare (compte gratuit)
  • transmis mon domaine à mon herokuapp (CNAME example-app.com -> example-app.herokuapp.com)
  • définir L'option Cloudflare SSL à 'Full SSL'
  • a ajouté mon domaine à mon application heroku
  • Forcer https avec cette express middleware:

    app.use(function(req, res, next) {
        if (req.headers['x-forwarded-proto'] != 'https') {
            res.redirect('https://' + req.headers.host + req.path);
        }
        else {
            return next();
        }
    });
    

Le heroku de domaine http://example-app.herokuapp.com fonctionne correctement et redirige vers https://example-app.herokuapp.com, vert serrure et de toutes.

Les Deux http://example-app.com et https://example-app.com ne fonctionne pas. L'onglet navigateur icône continue de tourner et n'a jamais résolu. Toutes les idées sur la façon d'obtenir ce travail? Est-ce même possible?

*UPDATE

C'est à la recherche comme il EST réellement possible. De CloudFlare support:

Salut Bill,

fondamentalement, tant que "l'origine" supporte une connexion SSL, vous pouvez utiliser pleinement SSL avec CloudFlare.

Simon

CloudFlare a publié ce billet de blog aujourd'hui: https://blog.cloudflare.com/universal-ssl-be-just-a-bit-more-patient/

mon site a commencé à se résoudre, mais obtenir un message "Votre connexion n'est pas privée" comme dans la partie "erreurs que vous pouvez voir" du billet de blog. Aussi dans Mes paramètres CloudFlare il y a une alerte" SSL", donc j'imagine qu'une fois qu'elle est émise, cela peut fonctionner. Je vais continuer à y'all poster.

19
demandé sur Bill Johnston 2014-10-01 03:05:38

4 réponses

il y a un hic: C'est non sécurisé entre Heroku et Cloudflare.

  • il peut fonctionner avec "Flexible SSL" - HTTP non crypté entre Heroku et CF. Nous ne voulons pas que.
  • il fonctionne également avec "Full SSL" - HTTPS entre Heroku et les FC, mais sans que les FC valident le certificat. Heroku présente un *.herokuapp.com cert, FC est heureux. Malheureusement, un homme au milieu entre Heroku et les FC peut présenter unsnakeoil.co.mordor certes, un CF serait tout aussi heureux (et l'utilisateur ne peut pas le dire, ils ne voient CF cert)! C'est documenté dans le Full SSL section de la CloudFlare blog création de Stricte SSL.
  • mais " Full SSL (strict)" ne fonctionne pas, parce que CF attend Heroku à présent yourdomain.com cert, et donne une page d'erreur :-(

    [Vous bien sûr obtenir un tel cert vous-même et payer Heroku pour le servir aux FC, mais cela revient à la case départ... Vous faire obtenir des prestations de CDN, mais ce n'est pas"complètement libre SSL sur Heroku".] Cette situation est discutée dans L'article de CloudFlare configurer CloudFlare et Heroku sur HTTPS.

cette configuration avec SSL complet est-elle acceptable? On pourrait soutenir que les liens entre les FC et Heroku sont probablement "dans la colonne vertébrale, au-dessus des nuages" et relativement difficiles à contrôler pour un attaquant actif, de sorte que la communication est clairement plus sécuritaire que l'absence de TLS. Mais ce n'est pas sécurisé de bout en bout, et vous êtes donner à l'utilisateur un faux sentiment de sécurité normalement associé avec HTTPS et l'icône de serrure verte, et certains diraient que c'est pire que d'être à l'avant avec pas de TLS du tout... [Voir opinions surhttps://news.ycombinator.com/item?id=8382335]

à partir de février 2015, je n'ai vu aucune option dans CF pour configurer le mode Strict complet pour attendre un cert sur un autre domaine. Je ne sais pas pourquoi les FC ne le permettent pas, ce serait techniquement faisable.

17
répondu Beni Cherniavsky-Paskin 2016-07-26 15:36:22

cela fonctionne exactement comme je l'ai fait installer. Le problème, c'est qu'il a fallu quelques jours à CloudFlare pour émettre leur Unlimited SSL. Une fois qu'il est écrit 'SSL active' sous vos paramètres CloudFlare SSL, il fonctionnera.

12
répondu Bill Johnston 2014-10-05 20:28:26

pour que le domaine apex fonctionne, vous devez probablement utiliser DNS provider qui supporte les enregistrements D'ALIAS, Cloudflare fait aussi DNS et serait probablement travailler. Autres fournisseurs listés ici:https://devcenter.heroku.com/articles/custom-domains#root-domain

1
répondu friism 2014-10-01 19:37:25

pour que cela fonctionne, vous devez créer une règle de Page sur Cloudflare pour votre domaine. Le mien ressemble à quelque chose comme ceci:

URL Pattern: my-domain.co/*
Forwarding to: https://www.my-domain.co/

A partir de là, vous pouvez utiliser un CNAME sur www pour pointer my-domain.herokuapp.com.

Cloudflare (et la plupart des autres fournisseurs DNS) n'autorisent pas les enregistrements CNAME pour le domaine racine. Seulement pour les sous-domaines. www est un sous-domaine, donc vous pouvez forcer tout le trafic à www et cname que pour heroku.

0
répondu TJC 2014-10-01 21:35:41