Contenido mixto con SSL, WordPress detrás de un proxy inverso

22 ene 2017, 23:00:43
Vistas: 14.2K
Votos: 2

Encontré problemas de contenido mixto con SSL. Solicité un certificado SSL de Let's Encrypt para mi sitio de prueba WordPress detrás de un proxy inverso (articaproxy).

El mismo certificado SSL se ha implementado tanto en el servidor proxy inverso como en el virtual host de WordPress.

La redirección HTTP/HTTPS del proxy inverso funciona correctamente.

Forcé las URLs de siteurl y home a HTTPS en la base de datos MySQL para probar HTTPS.

Al abrir mi sitio WordPress y hacer clic en "mostrar contenido bloqueado", la consola de Chrome muestra 'Esta página no es segura (HTTPS roto)'.

La consola de Chrome también reporta que algunas hojas de estilo/scripts/imágenes no se sirven mediante HTTPS hojas de estilo/scripts/imágenes no servidas mediante HTTPS

Intenté instalar plugins relacionados para solucionar esto, pero fallaron. Por lo que están desactivados. plugins para corregir contenido mixto

El área de administración de mi WordPress no puede cargarse, debido a ERR_TOO_MANY_REDIRECTS.

Me gustaría saber cómo solucionar el contenido mixto y las redirecciones infinitas en la página de inicio de sesión del administrador.

Las sugerencias son bienvenidas.

****************** Actualización ***********************

Hola, quisiera proporcionar más detalles sobre la configuración de mi sitio de prueba WordPress.

Partes de los valores en mi wp-config.php relacionados con WP_SITEURL, WP_HOME, HTTPS:

define('WP_SITEURL', 'https://'.$_SERVER['HTTP_HOST']);
define('WP_HOME', 'https://'.$_SERVER['HTTP_HOST']);
define('FORCE_SSL_ADMIN', true);

if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';

Valores de 'siteurl' y 'home' del campo wp_options en la base de datos de WordPress:

https://yuantafood.i-shopping.email
https://yuantafood.i-shopping.email

Como mencioné antes, solo puedo acceder a wp-admin con mi dirección IP interna. Al intentar acceder a wp-admin con IP externa/FQDN no se carga, debido al error: ERR_TOO_MANY_REDIRECTS.

Después de buscar en muchos posts, forzar SSL con .htaccess parece haber funcionado para otros para resolver los problemas de contenido mixto.

También probé varios métodos para editar .htaccess, principalmente redirección permanente 301 y temporal 302.

Contenido del archivo .htaccess en la carpeta de WordPress (301):

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

# RewriteBase /
# RewriteRule ^index\.php$ - [L]
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule . /index.php [L]

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://yuantafood.i-shopping.email/$1 [R=301,L]

</IfModule>
# END WordPress

# Wordfence WAF
<IfModule mod_php5.c>
php_value auto_prepend_file '/var/www/wordpress/wordfence-waf.php'
</IfModule>
<Files ".user.ini">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
</Files>
# END Wordfence WAF

Tanto la redirección 301 como la 302 fallaron, haciendo que todo el sitio no se cargara debido a ERR_TOO_MANY_REDIRECTS.

1
Comentarios

Aquí hay dos capturas de pantalla y observaciones sobre eventos de proxy inverso acerca del fallo en la redirección de HTTP a HTTPS.

redirección 301 &

redirección 302

Owen Owen
25 ene 2017 21:55:03
Todas las respuestas a la pregunta 2
3

¿Has cambiado la "Dirección de WordPress (URL)" y la "Dirección del sitio (URL)" en Ajustes → General en WP-Admin de http a https? ¿Has vaciado la caché y vuelto a comprobar? Si todavía hay protocolos mixtos, probablemente provengan de URLs codificadas directamente, como imágenes o enlaces externos. Puedes dejarlo así o solucionarlo. Yo pasé por esto cuando cambié a SSL, puedes echar un vistazo a la parte final de mi artículo.

23 ene 2017 15:14:56
Comentarios

Gracias por tu respuesta.

Ya que he forzado los campos siteurl y home en la tabla wp_options con el valor 'https://yuantafood.i-shopping.email'

Las opciones "WordPress Address (URL)" y "Site Address (URL)" en Ajustes aparecen en texto gris: http://imgur.com/C4ajdBx

He vaciado la caché y verificado nuevamente, pero el problema de contenido mixto persiste.

Solo puedo acceder a la página de administración con una dirección IP interna. Lo cual no se ve afectado por ERR_TOO_MANY_REDIRECTS: http://imgur.com/YBrUess

Gracias por el artículo, Why No Padlock es un sitio muy útil.

Configurar la regla para redirigir HTTP a HTTPS en .htaccess funciona para otros, pero no para mí.

Owen Owen
23 ene 2017 19:14:11

¿Estás usando Apache o Nginx? .htaccess solo funciona con Apache.

hcheung hcheung
24 ene 2017 02:20:33

Hola~ Estoy usando Apache versión 2.4.10.

Owen Owen
24 ene 2017 08:11:23
7

Elimina todos los plugins de forzar SSL que estés ejecutando, vuelve a la configuración predeterminada en los archivos wp-config.php y .htaccess antes de aplicar la configuración para usar HTTPS. Esto eliminará todos los conflictos que estás teniendo y los bucles de redirección. Después de eso, sigue estos pasos:

  1. Descarga el script de Búsqueda y Reemplazo en la Base de Datos de Interconnect IT aquí
  2. Descomprime el archivo y coloca la carpeta en la raíz de tu instalación de WordPress, luego renombra la carpeta a replace (captura de pantalla)
  3. Accede a la nueva carpeta que creaste desde tu navegador (ej: http://yuantafood.i-shopping.email/replace) y verás la herramienta de búsqueda/reemplazo
  4. En los campos "buscar…" y "reemplazar con…":
    • Reemplazar: http://yuantafood.i-shopping.email/ (HTTP, sin SSL)
    • Con: https://yuantafood.i-shopping.email/ (HTTPS)

Puedes hacer clic en el botón prueba en seco debajo de acciones para ver qué se reemplazará antes de ejecutar el script. Una vez que hayas terminado, asegúrate de eliminar la carpeta /replace/.

Siguiendo los pasos anteriores deberías asegurarte de que todos tus enlaces funcionen con HTTPS. Sin embargo, también puedes usar el plugin Remove HTTP para garantizar que no queden problemas de contenido mixto.

25 ene 2017 21:24:25
Comentarios

Hola~ Ejecuté antes el script de Search & Replace en la base de datos.

Siguiendo tus pasos, lo ejecuté nuevamente.

¡Es muy sorprendente que el valor:'http://yuantafood.i-shopping.email/' todavía pueda encontrarse en la tabla wp_wfHits!

¿Se generan automáticamente? aquí están mis capturas de pantalla después de ejecutar search & replace.

Gracias a ti, el número de contenidos mixtos ha bajado a 1. Y el molesto ERR_TOO_MANY_REDIRECTS ha desaparecido en el enlace externo de la página wp-admin :)

contenido mixto: wp-emoji-release.min.js

Owen Owen
25 ene 2017 23:10:20

@Owen En adelante, no deberías experimentar ninguna solicitud HTTP desde tu sitio ya que todas están actualizadas. Si estás usando algún plugin de caché, asegúrate de borrar tu caché desde tu sitio web y navegador. ¿Estás usando el plugin Remove HTTP?

Ethan Rævan Ethan Rævan
25 ene 2017 23:27:26

¡Gracias! con toda tu ayuda, estoy en el camino hacia adelante. ¿Cómo limpio la caché desde el sitio web de WordPress? Estoy usando el plugin Remove HTTP como sugirió Ethan, Después de activar y desactivar la prueba de Remove HTTP, minimizó el contenido mixto a 1. Lista de mis plugins actualmente activados.

Owen Owen
25 ene 2017 23:45:30

@Owen No parece que ninguno de esos plugins cause algún problema. Si escribo manualmente https://yuantafood.i-shopping.email se cargará SSL sin problemas. Esto significa que tu pregunta ha sido resuelta. Para evitar que este hilo se sobrecargue con comentarios y se desvíe del tema, haz clic en la marca de verificación junto a mi respuesta y abre una nueva pregunta sobre cómo forzar tu sitio web a usar HTTPS (SSL).

Ethan Rævan Ethan Rævan
26 ene 2017 04:31:06

Después de leer un artículo de blog de PIOTR KUNICKI. Seguí las instrucciones para eliminar Emoji. (Tendrás que hacerlo nuevamente después de que se actualice la versión de tu tema activo).

¡Funciona! El candado verde aparece sin advertencias (aunque hay algunas advertencias de contenido mixto en la página wp-admin).

El siguiente paso, me gustaría forzar que todas las URL HTTP se redirijan a HTTPS. ¿Alguna sugerencia para mí, por favor? :)

Owen Owen
26 ene 2017 04:49:40

@Owen Me alegra que la mitad del problema esté resuelto. Crea un nuevo hilo de pregunta o busca una pregunta anterior. Intenta buscar cómo "forzar ssl" o "forzar https".

Ethan Rævan Ethan Rævan
26 ene 2017 07:20:49

Acabo de seguir otro comentario de @thaevok. Agregar $_SERVER['HTTPS'] = 'on'; a wp-config.php funcionó para mí. Ahora, http redirige a https perfectamente.

Owen Owen
27 ene 2017 21:27:31
Mostrar los 2 comentarios restantes