¿Por qué mi servidor web lanza 403 Forbidden al intentar usar HTTPS?

Oct 08 2020

Quiero que el tráfico de mi servidor web se atienda de forma segura. Estoy ejecutando el servidor Ubuntu 20.04 con Abyss Web Server, que tiene soporte nativo para usar Let's Encryptcertificados.

Seguí todas las instrucciones que se encuentran en su sitio web exactamente, pero al intentar acceder después, solo da un error 403. Al volver a http, no hay problemas: puedo acceder al sitio perfectamente. Y lo único que estoy cambiando al cambiar de https a http es el cuadro desplegable que dice protocol(ver la imagen a continuación) y luego reiniciar el servidor.

443 obviamente está abierto en mi computadora y enrutador (de lo contrario, solo obtendría una respuesta de tiempo de espera)

No se encontraron problemas al generar el certificado LE. Y la consola muestra que todo está bien, cuando no lo está.

Todo mi tráfico web pasa por Cloudflare antes de llegar a mí, ¿podría ser eso lo que está causando el problema? Si es así, me limitaré a http con Cloudflare, debido a la seguridad adicional que brindan, pero esto suena como algo que está mal en mi PC: algo no permite que las solicitudes https accedan al sitio web.


Cloudflare proporciona algo de cifrado por sí mismo, sin embargo, esto es solo entre el agente de usuario y los servidores de Cloudflare; no hay ninguno entre Cloudflare y el servidor de origen. Quiero cifrado de extremo a extremo.

Entonces, cuando visite mi sitio, dirá https, pero esto es solo entre el usuario y Cloudflare: el tráfico entre mi servidor y Cloudflare sigue siendo el viejo http en el puerto 80.


Para demostrar que seguí las instrucciones correctamente, así es como se ven las configuraciones principales para mi sitio en la consola principal (con mi nombre de host):

¿Podría ser alguna regla en mi computadora que no conozco? Creo que es un problema del lado del servidor, que no tiene nada que ver con cloudflare. La ruta de los documentos htdocs/nunca ha cambiado y no está en una posición que requiera permisos elevados para acceder a mi computadora. Como dije antes, cuando vuelvo a http en el puerto 80, todo funciona bien. No cambio nada más.

Por el momento, acabo de cambiar mi sitio a http para que sea accesible, hasta que (con suerte) se pueda resolver este problema.

Actualizar:

Eludir el proxy de Cloudflare produjo el mismo resultado: un 403 prohibido.

Para proporcionar información adicional que pueda ayudar, aquí están mis registros DNS (con información confidencial tachada):

Mi Let's Encryptcertificado también se ha verificado por completo, por lo que debe ser algo así como un problema de permiso o nombre de host.

Respuestas

pigeonburger Oct 10 2020 at 22:24

¡Resuelto!

Y fue todo lo contrario de lo que esperaba que fuera la solución.

El problema no estaba en el extremo de mi servidor de origen, todos los permisos y reglas de firewall se configuraron correctamente; este fue un problema en el extremo de Cloudflare.

Como configuré el sitio para usar solo https , intentar acceder al sitio a través de HTTP devolvió 403 prohibido porque no permitía el tráfico HTTP, solo HTTPS.

Como resultado, Cloudflare, debido a cómo lo configuré cuando puse este sitio en línea por primera vez, seguí intentando ver mi sitio a través de HTTP y, cuando recibí ese error, se lo mostró al usuario. Restablecer todas mis configuraciones de Cloudflare y reconfigurarlas para que visitara mi sitio en HTTPS lo hizo accesible, sin dejar de ser proxy a través de Cloudflare.

Ahora también reescribe todas las solicitudes HTTP a HTTPS, ¡así que no más errores 403!