Forzar https SSL en WordPress: ¿Cómo pasar de http a https?

https ssl

¿Tienes una página concreta de tu web que debe ser segura?, ¿tienes una serie de entradas que quieres proteger con SSL? ¿o quieres proteger todo tu WordPress?, pues hay varias maneras de hacerlo de manera sencilla … cómo siempre.

Si lo que deseas es forzar la seguridad mediante SSL para todo tu sitio solo tienes que instalar el plugin Force SSL everywhere y, una vez se accede, todas las páginas son seguras.

Ahora bien, si lo que deseas es definir entradas o páginas para que sean seguras, por ejemplo, una página que acoja tu tienda electrónica o algún formulario, también es sencillo.

Puedes hacerlo usando un plugin, WordPress HTTPS (SSL). Una vez lo instales, en su página de ajustes, puedes especificar si quieres asegurar todo el sitio o solamente la zona de administración. Para asegurar páginas o entradas concretas añade una caja al editor de WordPress en la que hacer que sea segura.
asegurar post wordpress.

Si, por otro lado, prefieres asegurar entradas concretas con un código, puedes añadir el siguiente a tu plugin de funciones:

//Forzar SSL en páginas y entradas
function force_ssl($force_ssl, $id = 0) {
$ssl_posts = array(22, 130, 573);

if(in_array($id, $ssl_posts)) {
$force_ssl = true;
}
return $force_ssl;
}
add_filter('force_ssl' , 'force_ssl', 1, 3);

Simplemente cambia la lista de IDs de las entradas/páginas a proteger en la línea 3.

Adicionalmente, puedes forzar seguridad mediante SSL en las pantallas de acceso y en la administración de WordPress añadiendo estas líneas al archivo wp-config.php:

define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

En la primera línea fuerzas SSL en las pantallas de acceso, en la segunda en toda la administración. Para desactivarlas cambia el parámetro «true» a «false«.

Y si quieres, también se puede forzar SSL desde .htaccess, para lo que tendrías que añadir estas líneas:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$  [R,L]

Creo que huelga aclarar que debes personalizarlo con tu dominio (anda, ya lo dije).

Y ya solo me queda recordarte que también puedes activar SSL en WordPress.com, con menos opciones pero al menos es algo.

Bueno, pues creo que con esto están cubiertas prácticamente todas las posibilidades. Si se te ocurre alguna más nos lo cuentas en los comentarios.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(94 votos, promedio: 4.9)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

43 comentarios en “Forzar https SSL en WordPress: ¿Cómo pasar de http a https?”

  1. Hola Fernando:

    Me parece que has tocado un tema muy interesante y del que se habla poco. Justo hace poco yo mismo puse una consulta sobre ello en el foro.

    Al ver que accedía a mi WP desde la universidad decidí ponerme a configurar el servidor aunque fuera con un certificado autofirmado y encontré las directivas del wp-config para asegurar la zona de administración. Lo único que ahora hay un problema, si ahora alguien accede por https al blog verá la alerta del navegador. Contra esto no he encontrado solución porque aunque ponga algo en el htaccess lo primero que se hace cuando te conectas por https es acordar la sesión, por lo que saldrá el aviso igualmente. Pero bueno, lo que hago es ir con cuidado al publicar enlaces y por suerte los navegadores no ponen la ‘s’ automáticamente 😉

    Un saludo y muchas gracias por el artículo!

      1. Creo que no me he explicado bien Fernando, yo no quiero ninguna página en HTTPS, únicamente la zona de administración y te he entendido que el primer plugin es para poner todo el blog en HTTPS.

        Lo que yo decía es que al habilitar HTTPS en el servidor también se puede acceder a la zona pública con HTTPS y saldrá un aviso no muy elegante diciendo que el certificado es de palo. Lo que yo quería era evitar que se accede por HTTPS a la zona pública de la web (todo menos la zona de administración). Pero yo creo que no es posible porque aunque pongas algo en el htaccess primero se establece la sesión https (ya sale el cartel) y después ejecutará las reglas que haya.

        Un saludo y gracias por la respuesta.

          1. Hola Fernando:

            Gracias por la respuesta de nuevo.

            El segundo plugin lo he probado, efectivamente hay una opción para que en las entradas en las que no se indique lo contrario se acceda mediante HTTP y eso funciona. Pero si tu accedes por la web mediante HTTPS y el certificado no es válido el aviso del navegador sale antes de que se haga la redirección.

            PD: Parece que nos hemos puesto de acuerdo por un día en publicar sobre HTTPS, hoy he publicado yo un tutorial en mi web sobre como configurar HTTPS en Apache 😀

  2. Fernando, esto es capaz de parar los registros «truchos»?
    No se que más hacer, se registran en uno de mis sitios, promedio de 10 por dia que buscan hacer spam entre los usuarios.

    1. Si tienes mucho problema con eso es mejor tomar las riendas, hay plugins para que tengas que aprobar todos los registros, o a las malas cierra el registro y da tu de alta a los que quieran registrarse.

      1. Que plugin me recomendas?
        Es un sitio de avisos clasificados donde la gente se registra y quieren publicar sus avisos enseguida, no se si me ayudaría mucho eso. Tiene que haber algo..

  3. Íñigo Nieto

    Hola Fernando,
    Lo primero felicitarte por la gran cantidad de contenido de calidad que ofreces aquí.
    A mi me gustaría saber cómo puedo hacer lo contrario de lo que hablas en este post.
    Tuve un problema a actualizar el plugin WP better security a IThemes Security. Algo hizo que no me dejaba acceder al panel de administración, una vez solucionado esto, toda la navegación iba a través de https (y no tengo certificado de seguridad). Introduciendo unas líneas de código en el .htaccess creí haberlo solucionado. La cuestión es que al introducir las url de mi web en las discusiones de linkedin, o plataformas de blogs tipo mktfan.com no me carga las imágenes. Tampoco puedo validar las Twitter Cards. Esto antes nunca me había pasado.
    Cuando busco mi web en google, sale siempre con https://
    La Web en cuestión es
    Cuando toco cualquier cosa del plugin de seguridad, en el .htaccess elimina el código que introduje para la navegación por http://

    Llevo una semana intentando solucionarlo, leyendo por blogs y foros pero no sé como solucionarlo.
    Cualquier idea que me puedas dar te lo agradeceré enormemente.

    Muchas gracias de antemano! un saludo 🙂

  4. No me ha pasado jamás algo así. Una vez comprobado que en .htaccess y wp-config.php no hay ninguna línea del plugin de seguridad (y si la hay la borras y dejas solo lo de wp) yo buscaría en la base de datos, tiene que haber tablas del plugin que estén forzando el https

    1. Íñigo Nieto

      Muchísimas gracias por tu contestación y por tu tiempo, Fernando. Voy a probar lo que me comentas.
      Un saludo!!

  5. Hola buenas. He leído tu entrada y posteriormente he seguido tus pasos, pero me sigue pasando lo mismo que con todos los plugins: sin un certificado google chrome no me deja entrar. me dice que hay un error de ssl. Mi hosting no admite certificados (no con mi plan..) ¿De verdad no podría tener ssl sin un certificado? muchas gracias

  6. acabo de instalar el plugin y he activado el forzar https y ya no me deja acceder a la administración. Ayuda por favor

    1. Estoy en la misma situación que alberto, ayer instalé el plugin y desde entonces no puedo acceder a administración.

  7. Hola Fernando,
    he puesto el código de force_ssl en el plugin functions como explicas mas arriba pero no me ha tomado nada.

    No funciona.
    Saben que puede estar pasando?
    Desde ya muchas gracias

  8. Pingback: Cómo asegurar tu tienda online woocommerce con HTTPS [email protected]

  9. Estoy leyendo que Goolge modifica el algoritmo para favorecer a los sitios que usen SSL y, estoy pensando en probar, pero tengo mis dudas…uso cloudflare, es seguro instalar un plugin de este tipo…???…porque e leído algunos comentarios que me dejan con la duda.

  10. Buenas Fernado,
    Buscando que líneas meter en el .htaccess para configurar con https:// varias URL’s de mi web, he encontrado tu blog, y me acabas de crear una duda existencial (disculpa mi ignorancia). Acabo de contratar un certificado SSL con un tercero para mi web de wordpress (para que me envíen ciertos datos con seguridad), podía haber evitado gastar dinero e instalar algunos de estos plugins que comentas?
    Gracias
    Saludos

  11. Nicolas Mercado

    hola tengo estoy comprobando que partes de mi web no navegan seguras, logre borrar 6 errores con esta web qeu busca: https://www.whynopadlock.com

    Me salta error en una url
    Ya borre imagen de mi servidor y sigue reconociendolo ese enlace borre cahe todo y sigue ubicandolo que puedo hacer no sabes algun plugin que pueda reemplazr HTTP por HTTPS ya n ose que hacer o que otra solucion puede ser.

    todo esto lo hago porque en mi SSL que compre en GEOTRUST me sale el tringulito amarillo.
    Es raro porqeu en el area AADMIN de wprdpress sale perfectamente bien el candado normal.
    Agradezco ayuda

  12. Pingback: Let’s Encrypt, certificados SSL libres y gratis para asegurar tu web con HTTPS | Ayuda WordPress

  13. Hola, Fernando espero pueda sayudarme, por alguna razon mi sitio no esta forzando todas las paginas al SSL, es la primera vez que me pasa.. no se porque, te ha pasado algunas vez?.. he probado varias codigos y nada, te compaarto uno de ellos

    # Secure SSL (HTTPS)

    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    # Force Non WWW

    RewriteCond %{HTTP_HOST} !^tukekevoip.com$ [NC]
    RewriteRule ^ https://tukekevoip.com%{REQUEST_URI} [L,R=301]

      1. Crack muchas gracias, lo habia resuelto antes de que me enviaras tu perfecto código… permiteme compartirte como se soluciono.

        Pues solo tenia que poner el código al inicio del htaccess… 🙂 si lo pongo mas abajo no lo toma… un abrazo!

        De corazón te agradezco tu tiempo, nos hablamos pronto.

  14. Aritz Lacruz Lopez

    Hola fernando,

    Yo tengo un pequeño problema con la SSL. Si en el explorador tecleas http://www.miweb.com la https/: no sale, cuando ya entrar a cualquier entrada o url de wordpress ya funciona la SSL, pero a primeras no… yo quiero como vuestra web, pongas lo que pongas por ejemplo ayudawp.com ; https://www.ayudawp.com ; automaticamente te sale el https:// sin tener que teclearlo tu.

    Sabrias como solucionarlo?

  15. Pingback: Let’s Encrypt, certificados SSL libres y gratis para asegurar tu web con HTTPS (actualizado)

  16. Pollería Miguel López

    hola, gracias por vuestros consejos, ahora tengo un pequeño problema, lo unico que hice fue modificar el htaccess. intente forzar todas las url a https.
    con:
    RewriteEngine On
    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ [R,L]
    y he perdido el acceso a admin, me dice que no tengo permisos suficientes, lo peor es que he restaurado una copia de los archivos y no se resuelve. espero puedan ayudarme gracias

      1. Hola Fernando muchísimas gracias, si probé de todo, borre el archivo htacess. lo restaure de la copia de seguridad, vamos todo lo que se me ocurrió. y no se por que no me dejaba acceder.
        finalmente restaure de una copia de seguridad todo wordpress
        Gracias por tu ayuda

  17. Daniel Canalda [interdigital.e

    Hola Fernando:

    Me están siendo de gran ayuda los 1001 Trucos de WordPress. Buen libro al tener siempre sobre la mesa.
    Me gustaría hacerte una consulta sobre este tema ara ver si puedes orientarme.
    Al instalar el certificado SSL en una web desarrollado con WordPress y la plantilla Avada, de pronto n opuedo generar nuevas entradas, ni crear nuevos usuarios. Sin activar el log de error en el wp-config me saltan estos mensajes cuando accedo al menú de Entradas:

    Warning: Creating default object from empty value in /var/www/interdigitalwp/httpdocs/wp-admin/includes/post.php on line 641
    Warning: Invalid argument supplied for foreach() in /var/www/interdigitalwp/httpdocs/wp-content/plugins/wordpress-seo-premium/admin/metabox/class-metabox.php on line 1062

    Si activo el log de errores, entonces me saltan muchos más mensajes.
    Volviendo a poner el servidor sin el certificado todo vuelve a ir bien, pero claro, sin SSL. Se te ocurre donde mirar?
    Ya pasé por desactivar los plugins, actualizar versiones de WP, plugins y tema.

    Que me recomiendas?

    Gracia y un saludo

    1. No te podría decir, la web en sí carga bien con el ssl así que como no veo lo que pasa en las tripas no te se decir a ciegas la verdad.

      Si son solo errores con desactivar el debug valdría pero al no dejarte editar la cosa habría que mirarla en detalle.

      ¿has probado a cambiar de tema?
      ¿has desactivado el yoast y mirado si sigue pasando que no puedas editar?

      Una cosa son los errores, que puedes quitarlo con un wp_debug false en el config y otra el bloqueo de acciones

  18. Hola,
    Creo que hay algun problema en el codigo del .htaccess:

    RewriteEngine On
    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ [R,L]

    Pego este código en el .htaccess y cuanto hago un test con pingdom por ejemplo me dice esto: Remove the following redirect chain if possible:

    http://dominio.com/
    http://www.dominio.com/

    Es decir para redirigir al https pasa primero por http y luego por htttps. Hace 2 redirecciones.

  19. Se puede desactivar el ssl solo en una página en concreta? en ella tengo un reproductor que hace conflicto

    con urls https, quiero desactivar el ssl pero sin que afecte a todo el sitio.

    1. Una página siempre existe en http y https (ahí lo dejo)

      No obstante, creo que el enfoque es incorrecto, pues si dejas una página insegura en tu dominio comprometes la seguridad de datos de tus visitantes ¿por un reproductor? ¿No hay otro reproductor que sí funcione en https?

      1. Me faltó aclarar que es una reproducción en directo, no es problema de reproductores sino la url del streaming, trabajo mucho con radios y al ingresar la dirección externa de la transmisión que es sin ssl se ve como contenido inseguro o si se fuerza la ssl el audio o imagen de tv no se reproduce.

        Busqué mucho por internet sin encontrar una solución, lo único es que se debe desactivar el ssl o dejando el error de contenido mixto, en señales de radio se quita el candado verde y en transmisiones de tv que tienen una url externa con extensión .m3u8 no se reproduce si no se desactiva en WordPress la dirección 301 del ssl. Desde el servicio de hosting del streaming me dicen que no es posible generar una url con certificado y si existe alguna alternativa tiene un costo extra elevado, en fin todo un dolor de cabeza.

        Con esto que los navegadores de ahora muestran un feo cartel de web insegura se ha vuelto un problema.

        Un saludo.

        1. Efectivamente, no queda otra que aceptar el aviso de No seguro en esa página al haber contenido mixto.

          Esto también pasa con algunos servidores de ads que no sirven en https

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido