¿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.
.
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.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
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!
Prueba con el primer plugin, te permite añadir las directivas adecuadas de manera controlada.
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.
Que si, que tienes razón, me refería al segundo, que te permite elegir
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 😀
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.
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.
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..
Hola Fernando y en los dominios que no tengan el certificado ssl, sirve igual el plugin?
lo mejor es tener certificado ssl pero tiene su costo , es una seguridad para nuestro sitio web
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 🙂
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
Muchísimas gracias por tu contestación y por tu tiempo, Fernando. Voy a probar lo que me comentas.
Un saludo!!
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
acabo de instalar el plugin y he activado el forzar https y ya no me deja acceder a la administración. Ayuda por favor
Estoy en la misma situación que alberto, ayer instalé el plugin y desde entonces no puedo acceder a administración.
El código para el plugin ya no funciona. Parece que ya no existe ese filtro.
Muchas gracias me funciono a la perfección que Dios te Bendiga, saludos desde Venezuela.
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
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.
Y ya es un factor de posicionamiento. Acaba de publicarlo Google
http://googlewebmaster-es.blogspot.com.es/2014/08/https-como-senal-del-ranking.html
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
Que tal. yo utilizo
https://wordpress.org/plugins/wp-force-ssl/ y me ha ido muy bien.
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
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]
Es importante comentarte que solo funciona para el home, pero en las paginas si le quitas la «s» al https veras que muestra la url y no forza al https
Prueba con este en htaccess (pero quita el resto):
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
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.
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?
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
Tendrías que acceder por FTP y borrar el htaccess antes de nada
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
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
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
El plugin que ahora hace todo ese trabajo de manera fácil se llama: «really simple ssl»
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.
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.
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?
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.
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