La prueba para el certificado válido para habilitar force_https está rota, dejándola desactivada cuando debería estar activada

Edición: cambiando esto a un error. Force_https ahora está desactivado en sitios donde antes estaba activado, lo que rompe el funcionamiento.


Pasé un buen rato depurando un sitio donde “las subidas no funcionan”. Después de revisar una lista de cosas obvias (reconstrucción, modo seguro, considerar plugins no estándar), finalmente noté una advertencia de contenido mixto y activé force_https, y volvimos a estar operativos.

Pensé que hace un año o dos force_https estaba activado de forma predeterminada, pero recientemente he oído (o quizás visto) varias veces que las cosas fallaban porque force_https no estaba activado.

¿Hay alguna razón para no tenerlo activado de forma predeterminada?
[/quote]

Pasé un buen rato depurando un sitio donde “las subidas no funcionan”. Después de revisar una lista de cosas obvias (reconstrucción, modo seguro, considerar plugins no estándar), finalmente noté una advertencia de contenido mixto y activé force_https, y volvimos a estar operativos.

Pensé que hace un año o dos force_https estaba activado de forma predeterminada, pero recientemente he oído (o quizás visto) varias veces que las cosas fallaban porque force_https no estaba activado.

¿Hay alguna razón para no tenerlo activado de forma predeterminada?

1 me gusta

Está habilitado automáticamente en discourse.conf si hay un certificado válido presente.
Eso es, de hecho, desde hace un año o dos.

grep -q 'force_https' "/var/www/discourse/config/discourse.conf" || echo "force_https = 'true'" >> "/var/www/discourse/config/discourse.conf"

1 me gusta

¡Ajá! Gracias, Richard.

Así que no estoy perdiendo la cabeza.

El problema es que la prueba de un certificado válido está fallando:

# openssl verify -CAfile ca.cer fullchain.cer 
O = Digital Signature Trust Co., CN = DST Root CA X3
error 10 at 3 depth lookup: certificate has expired
error fullchain.cer: verification failed

Y luego, si elimino mozilla/DST_Root_CA_X3.crt de /etc/ca-certificates.conf y ejecuto update-ca-certificates, obtengo esto:

C = US, O = Internet Security Research Group, CN = ISRG Root X1
error 2 at 2 depth lookup: unable to get issuer certificate
error fullchain.cer: verification failed

En el navegador se muestra correctamente. Acabo de reconstruir este contenedor hoy (así que debería tener los certificados raíz actualizados).

No sé lo suficiente sobre este tema de certificados para saber exactamente qué está pasando. Puedo usar curl para obtener un certificado de Let’s Encrypt desde dentro del contenedor (una prueba que estaba fallando en un contenedor de WordPress con el que trabajé la semana pasada).

Y no soy el único esta vez; ha habido varias personas que han solucionado el problema activando force_https recientemente.

1 me gusta

Sí, esto parece estar relacionado con la expiración del certificado raíz de Let’s Encrypt, especialmente o únicamente si comenzó el viernes de la semana pasada.

¿Qué muestra openssl version (dentro del contenedor Docker)? (Debido a esto).

2 Me gusta
OpenSSL 1.1.1d  10 sep 2019

¿Quizás sea necesario que “ISRG Root X1” esté en el almacén de confianza? Sin embargo, veo mozilla/ISRG_Root_X1.crt en ca-certificates.conf.

1 me gusta

¡Dios mío! Y pasé dos días depurando un problema que pensé que era algo complejo relacionado con Rails, Ansible y Python, pero resultó ser que mi servidor, que antes tenía force_https activado, ahora no lo tiene, y una serie de solicitudes se hicieron a http://mi_servidor en lugar de https://mi_servidor.

Esto parece un error.

2 Me gusta

Sí, esto es efectivamente un error.

La semana pasada estábamos migrando un foro a otro servidor y nos topamos con el límite de reemisión de LetsEncrypt (máximo 5 por semana para el mismo nombre de host). Al principio no sabíamos por qué, pero este error provocaba que el certificado se reemitiera en cada compilación y, tras cinco intentos, se alcanzó el límite de tasa. Esto no activó ninguna alarma porque el certificado anterior seguía en el servidor.

Hasta que movimos el foro a un servidor nuevo. Entonces no obtuvimos un certificado nuevo. Podíamos copiarlo del servidor antiguo, pero nunca nos dimos cuenta de qué lo causó.

acme.sh está fijado en la versión 2.9.0, mientras que master está en la 3.0.1 y cuenta con una función para establecer una cadena predeterminada, que sospecho podría estar relacionada.

3 Me gusta

¡Hola @Falco! ¿Te importaría echar un vistazo a esto? Pareces estar muy versado en estos temas. He estado revisándolo durante varias horas a lo largo de la última semana o dos y todavía no entiendo qué está pasando.

1 me gusta

Sí, me lo asigné yo mismo durante el fin de semana. Aquí tenemos un puente festivo prolongado, pero lo revisaré esta semana tan pronto como sea posible.

2 Me gusta

Ah, ya veo. Esa era la parte que me había pasado por alto. Perdona entonces por haberte molestado.

Nuestro largo fin de semana de vacaciones acaba de terminar y el día de Nuestra Señora de Aparecida no estaba en mi calendario. Pero ahora lo sé.

Gracias.

2 Me gusta

Esto se solucionó en

5 Me gusta

Gracias @Falco por tu arduo trabajo en esto :slight_smile:

2 Me gusta