nodejs node extension deploy app node.js ssl heroku express cloudflare

node.js - node - Heroku+Cloudflare completamente gratis SSL



procfile heroku node js (4)

Esto funciona exactamente como lo tenía configurado. El problema fue que a CloudFlare le tomó un par de días emitir su https://blog.cloudflare.com/universal-ssl-be-just-a-bit-more-patient/ . Una vez que diga ''SSL activo'' bajo su configuración de CloudFlare SSL, funcionará.

Intentar obtener SSL completamente gratis en Heroku usando Cloudflares, el nuevo Universal SSL gratuito

Lee este artículo: http://mikecoutermarsh.com/adding-ssl-to-heroku-with-cloudflare/

Lo que parece sugerir que es posible ahora que Cloudflare ofrece SSL de forma gratuita.

Los pasos que tomé:

  • Configurar mi DNS con Cloudflare (cuenta gratuita)
  • Reenvió mi dominio a mi herokuapp (CNAME example-app.com -> example-app.herokuapp.com)
  • Configure la opción SSL de Cloudflare en ''SSL completo''
  • Agregué mi dominio a mi aplicación heroku
  • Forzando https con este middleware expreso:

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

El dominio heroku http://example-app.herokuapp.com funciona correctamente y redirige a https://example-app.herokuapp.com , bloqueo verde y todo.

Tanto http://example-app.com como https://example-app.com no funcionan. El icono de la pestaña del navegador sigue girando y nunca se resuelve. ¿Alguna idea sobre cómo hacer que esto funcione? ¿Es esto posible?

*ACTUALIZAR

Esto parece que es realmente posible. Desde el soporte CloudFlare:

Hola Bill,

Fundamentalmente, siempre que el "origen" admita una conexión SSL, puede usar Full SSL con CloudFlare.

Simon

CloudFlare lanzó esta publicación de blog hoy: https://blog.cloudflare.com/universal-ssl-be-just-a-bit-more-patient/

Mi sitio ha comenzado a resolverse, pero aparece el mensaje "Tu conexión no es privada", como en la sección "Errores que puedes ver" de la publicación del blog. También en mi configuración de CloudFlare hay una alerta de "emisión de SSL", por lo que imagino que una vez que se emita esto puede funcionar. Los mantendré informados.


Hay un problema: no es seguro entre Heroku y Cloudflare.

  • Puede funcionar con "SSL flexible" - HTTP sin cifrar entre Heroku y CF. No queremos eso.
  • También funciona con "Full SSL" - HTTPS entre Heroku y CF pero sin CF validando el certificado. Heroku presenta un *.herokuapp.com , CF está contento. Desafortunadamente, un hombre en el medio entre Heroku y CF puede presentar un snakeoil.co.mordor un CF sería igualmente feliz (y el usuario no puede decirlo, solo ven el certificado de CF). Está documentado en la sección Full SSL de la publicación del blog de CloudFlare Introducción a Strict SSL .
  • Pero "Full SSL (estricto)" NO funciona, porque CF espera que Heroku presente el yourdomain.com sudominio.com , y da una página de error :-(
    [ Por supuesto, puede obtener un certificado de este tipo para usted y pagarle a Heroku por entregarlo a CF, pero eso va a volver al punto de partida ... Usted recibe los beneficios de CDN, pero no es "SSL completamente gratuito en Heroku".] Esta situación es discutido en el artículo de CloudFlare Configure CloudFlare y Heroku sobre HTTPS .

Entonces, ¿esta configuración con SSL completo es aceptable? Se podría argumentar que los vínculos entre CF y Heroku están probablemente "en la red troncal, por encima de las nubes" y son relativamente difíciles de controlar para un atacante activo, por lo que la comunicación es claramente más segura que ninguna TLS. PERO no es seguro de extremo a extremo, y le está dando al usuario un falso sentido de seguridad normalmente asociado con HTTPS y el ícono de candado verde, y algunos dirían que es peor que estar al frente sin TLS en absoluto ... [Ver opiniones en https://news.ycombinator.com/item?id=8382335 ]

A partir de febrero de 2015, no vi ninguna opción en CF para configurar el modo Estricto completo para esperar un certificado en algún otro dominio. No tengo idea de por qué CF no permite eso, claramente sería técnicamente factible.



Para que esto funcione, debe crear una Regla de página en Cloudflare para su dominio. El mío se ve algo como esto:

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

Desde allí, puede usar un CNAME en www para apuntar a my-domain.herokuapp.com.

Cloudflare (y la mayoría de los otros proveedores de DNS) no permiten registros CNAME para el dominio raíz. Solo para subdominios. www es un subdominio, por lo que puede forzar todo el tráfico a www y cname que a heroku.