domingo, 12 de abril de 2020

Servidor web Apache2 + SSL Auto-firmado (https)

Al añadir el soporte SSL a nuestro servidor web Apache, permite establecer conexiones seguras y encriptadas entre cliente y servidor.

Es decir, vamos a hacer que nuestro servidor Apache use el protocolo HTTPS para una navegación más segura.

Usando un certificado SSL auto-firmado, que sirve para garantizar que nuestra página web, tienda, foro, blog, etc.. es un lugar seguro y confiable donde introducir datos como nombres de usuarios y contraseñas, ya que SSL es un protocolo de seguridad que establece una conexión segura entre cliente y servidor.

Nota importante: Debemos tener en cuenta que un certificado SSL auto-firmado solo será válido para hacer pruebas en un servidor local, pero nunca se debe utilizar en servidores de internet, para nuestra página web, tienda, foro, blog, etc.. ya que nuestro certificado no tendrá validez para los usuarios que la visiten, al no estar firmado por una autoridad certificadora (Certificate Authority (CA)) registrada ni reconocida que garantice que la página es segura y encriptada. Si queremos un  certificado para nuestra página web, tienda, foro, blog, etc... tendremos que pagar por él. O mejor aun, usar un certificado libre como Let’s Encrypt que es una Autoridad de Certificación gratuita, automatizada, y abierta.


Información sobre SSL (https), OpenSSL, mod_ssl y Cortafuegos


Acerca de SSL (https)

HTTPS es la versión segura del protocolo HTTP, creada en 1996 por Netscape Communications Corporation. Es un protocolo dependiente de HTTP, es una combinación de éste con un mecanismo de transporte SSL, garantizando así una protección razonable durante la comunicación cliente-servidor. Es ampliamente utilizado en internet, para comunicaciones seguras como transacciones bancarias, venta de entradas, pago online, etc...

El servicio utiliza el puerto 443 por TCP para realizar las comunicaciones (la comunicación normal de HTTP utiliza el puerto 80 por TCP).


Acerca de OpenSSL (https)

OpenSSL es una implementación libre, de código abierto, de los protocolos SSL (Secure Sockets Layer o Nivel de Zócalo Seguro) y TLS (Transport Layer Security o Seguridad para Nivel de Transporte).


Acerca de mod_ssl

Mod_ssl es un módulo para el servidor web Apache HTTP, el cual provee soporte para SSL


Modificaciones necesarias en el cortafuegos.

Es necesario abrir en el cortafuegos, además del puerto 80 por TCP (http),  el puerto 443 por TCP (https). Configure el cortafuegos para permitir conexiones en ambos puerto, pues en caso contrario el cortafuegos no te permitirá navegar por internet y te dará un error, o no te cargará las paginas web.


Para este tutorial vamos a usar el servidor web Apache, la suite openssl y un servidor Debian GNU/Linux.


Configuración.

Durante la instalación del servidor web apache2, este crea un fichero llamado (default-ssl.conf) de configuración para el protocolo SSL de acceso seguro (https). Por tanto, este archivo de configuración debe ser modificado para incluir los certificados auto-firmados que vamos a generar en este manual. 

Este archivo de configuración se encuentra en la siguiente ruta /etc/apache2/sites-available/default-ssl.conf (un poco mas adelante en este manual explicamos las modificaciones necesarias.)

Cuando acabemos de habilitar el protocolo SSL (https), de crear y añadir los certificados auto-firmados. Vamos a enseñar como redirigir todo el trafico del servidor web apache2, de http a https.

Todo el proceso de instalación los haremos desde una consola de comandos, por ejemplo konsole (pero tu puedes usar el que mas te guste).

Nota super importante: Todo el proceso de instalación se tiene que hacer como usuario administrador (root), a partir de Debian 10 Buster, para acceder como usuario root tenemos que usar el comando: su - (es: su mas espacio mas el signo menos) si te logeas con el antiguo comando: su no te va a funcionar y te dará algún error como por ejemplo al usar el comando: a2enmod ssl, te devolverá este error: bash: a2enmod: orden no encontrada, esto es debido a que las variables de entorno han sido modificadas entre el usuario su y el su -, por eso a partir de Debian 10 Buster tienes que usar su - para logearte como usuario root.



Comenzamos con el proceso de configuración de SSL (https).

Para comenzar tenemos que logearnos como usuario administrador con el siguiente comando: su -


1- Activamos el módulo ssl:
a2enmod ssl
Tras pulsar Intro o Enter, nos informa que para activar la nueva configuración tenemos que reiniciar el servidor web apache2, pero aunque nos informe, todavía no vamos a reiniciar el servidor web apache2, vamos a dejarlo para un poco mas adelante.

2-  Activamos el nuevo site default-ssl:
a2ensite default-ssl.conf
Tras pulsar Intro o Enter, nos informa que para activar la nueva configuración tenemos que reiniciar el servidor web apache2.

3- Ahora si vamos a reiniciar el Apache2, para activar las dos configuraciones anteriores
service apache2 restart


Verificación del funcionamiento SSL (https)

En un navegador web (chrome, firefox, chromium, opera, etc...), ponemos la dirección del servidor (en este manual es: https://192.168.1.20 - pero cada uno tendrá una una dirección distinta).
Después aparecerá el aviso del certificado auto-firmado.
Esto quiere decir que ya esta bien instalado y funcionado el módulo SSL para el servidor web Apache2.
Ahora vamos a instalar el certificado SSL auto-firmado

========================================================

Certificados SSL auto-firmados

4- Instalación

Lógicamente tenemos que instalar los paquetes necesarios, pero como estamos usando un servidor Debian GNU/Linux (v.10 Buster), resulta que estos dos paquetes ya vienen instalador por defecto. Pero vamos asegurarnos que están instalado, para ello usamos el siguiente domando, (este comando instala los paquetes openssl y ca-certificates):

apt-get install openssl ca-certificates
Observamos como nos informa que efectivamente ambos paquete se encuentran instalado y actualizados en la ultima versión

Generación de los certificados

La generación de un certificadoSSL requiere de los siguientes pasos: 
primero es generada una clave privada; en seguida ésta es usada para generar un pedido de certificación (Certificate Signing Request (CSR)). El pedido de certificación es entonces enviado a la entidad certificadora (Certificate Authority (CA)) que devuelve el certificado firmado. Es posible ahorrarse el último paso, generando un certificado auto-firmado (Self-signed Certificate).

5- Creamos una carpeta de trabajo llamada certs:
mkdir certs

6- Accedemos a dicha carpeta:
cd certs

7- Clave privada. Vamos a generar una clave privada (Private Key):
openssl genrsa -out server.key 2048
y observamos como lo ha generado sin problemas.

8- Esta clave debe ser almacenada con especial cuidado y sólo debe ser accesible por el usuario root:
chmod 600 server.key

9- Pedido de certificaciónPara generar un pedido de certificación (Certificate Signing Request), debe indicarse en el campo Common Name el nombre del servidor para el cual será generado el certificado. En caso de que un certificado sea requerido por varios servidores del mismo dominio, es posible usar la sintaxis *.usuariodebian.lan. Pero para este manual usaremos la dirección IP del propio servidor: 192.168.1.20 (vosotros usareis la ip de vuestro servidor web apache2)

openssl req -new -key server.key -out server.csr
Cuando ejecutamos este comando nos empezarán a pedir los datos de una manera interactiva, tenemos que ir contestando como nos convenga. Tenemos que tener cuidado cuando pregunta: Common Name  ya que tendremos que poner la dirección IP del servidor. En este manual es 192.168.1.20 (vosotros usareis la ip de vuestro servidor web apache2), cuando nos pregunte: A challenge password []: y por An optional company name []: ambas preguntas las dejamos vacía, pulsamos directamente Intro o Enter.

Observamos como después de introducir el ultimo dato del asistente, ha generado el archivo de pedido de certificación, y al final nos muestra un resumen de los datos introducidos por nosotros.

10- Certificado auto-firmado. En condiciones reales, el pedido de certificación debería ser enviado a una entidad certificadora autorizada, y esta nos devolvería el certificado firmado.

Pero al ser un certificado auto-firmado, es decir generados por nosotros mismos, no se lo tenemos que enviar a nadie. Y que como sabemos, NO somos una entidad certificadora autorizada ni reconocida, por eso los navegadores web catalogaran las paginas web de nuestro servidor web como inseguras, por el simple echo de no ser entidad certificadora reconocida por los navegadores web. 

Importante: que sea un certificado auto-firmado (Self-Signed Certificate) y los navegadores web NO lo reconozcan, y lo marquen y tachen de inseguro, no quiere decir que sea inseguro, simplemente es una advertencia de los navegadores web, por eso decimos que solo podemos usarlo en servidores personales locales. De aquí que tengamos que marcar en el navegador web una excepción de nuestro propio certificado.

En este caso, crearemos un certificado autofimando (Self-Signed Certificate), válido por 365 días, cada uno puede poner los días que necesite.

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
y vemos como el proceso a finalizado correctamente, y a firmado el certificado auto-firmado (Self-Signed Certificate)
El proceso de creación de los certificados concluyó perfectamente. Y fueron generados los siguientes archivos:

server.key = La clave privada
server.csr = El pedido de firma del certificado
server.crt = El certificado ya auto-firmado

El certificado auto-firmado es válido por 365 días, pero puede ser renovado en cualquier momento, al crear de nuevo el certificado auto-firmado, usando el mismo comando, cambiando 365 por el numero de días que necesitemos:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt


Instalación de la clave privada y del certificado auto-firmado

11- Para esto, debemos copiar las claves privadas en /etc/ssl/private
cp server.key /etc/ssl/private

12- Ahora copiamos el certificado en /etc/ssl/certs:
cp server.crt /etc/ssl/certs

13- Durante la instalación de apache2 se crea un archivo llamado (default-ssl.conf) de configuración para acceso seguro SSL (https). Por tanto, esta configuración debe ser modificada ahora para incluir los certificados auto-firmados generados por nosotros.

Este archivo de configuración se encuentra en la siguiente ruta: /etc/apache2/sites-available/default-ssl.conf y usaremos el siguiente comando para editar el archivo.

nano /etc/apache2/sites-available/default-ssl.conf
14- En el archivo default-ssl.conf que estamos editando nos interesan dos apartado. 

  - El primero no tenemos que hacer nada, ya que vemos que el motor SSL esta habilitado por defecto (SSLEngine on)

  - El segundo hace referencia a los nombre de los certificados. Vemos que por defecto los archivos tienen otro nombres, entonces vamos a ponerle el nombres correctos, para que apunten a dichos certificado auto-firmado (Self-Signed Certificate) que hemos generado nosotros.
Estos son los nombres originales que viene en la configuración por defecto:

        SSLCertificateFile         /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile  /etc/ssl/private/ssl-cert-snakeoil.key

Aquí hemos modificado y hemos puesto los nombre que hemos generado nosotros:

        SSLCertificateFile         /etc/ssl/certs/server.crt
        SSLCertificateKeyFile  /etc/ssl/private/server.key

En la imagen inferior hemos dejado comentado osea que no tiene funcionalidad las dos líneas originales, y hemos añadido las dos líneas correctas.

Una vez realizados los cambios, tenemos que pulsar en la siguiente combinación de teclas para guardar dichos cambios: Ctrl + O (tecla control mas tecla o) y pulsamos Intro o Enter y luego la combinación de teclas Ctrl + X (tecla control mas tecla x) para Salir

15- Por ultimo solo tenemos que reiniciar el servidor web Apache2 para que empiece a funcionar.
service apache2 restart

Observamos como hemos reiniciado el servidor perfectamente y no ha devuelto ningún error. 
Por Fin, el certificado auto-firmado está listo para utilizarse.

Como se trata de un certificado auto-firmado (Self-Signed Certificate), su utilización siempre dará origen a un aviso por parte del navegador web, del cliente FTP, etc...

En el caso de los navegadores web, tenemos que añadir una excepción de seguridad, para poder navegar por las páginas web, Normalmente basta con añadir la excepción una sola vez, pero puede haber navegadores que lo pidan siempre.


=======================================================



 Redireccionar todo el trafico de HTTP hacia HTTPS automáticamente en Apache2 

Existen varios métodos para realizar la redirección, y hacer que todo el trafico pase por https. Aquí no están detalladas todas las opciones posibles, simplemente he cogido las que puede valer para casi todo el mundo. Tu eliges la opción que te sea mas fácil, o mas rápida de implementar, o simplemente la que mejor te funcione.

- Usando los servidores virtuales de Apache2 (Redirect permanent)
- Usando .htaccess usando mod_rewrite



Usando los servidores virtuales de Apache2 (Redirect permanent).

En este método vamos a usar la redirección de todo el trafico de http a https, directamente desde el servidor virtual por defecto de apache2.

Para usar este método tienes que ser administrador del servidor, en caso contrario no podrás realizar la configuración. Pero se supone que este manual esta pensado para un servidor personal local instalado en Debian GNU/Linux.

Para ello editamos el archivo 000-default.conf usando el siguiente comando:

nano /etc/apache2/sites-available/000-default.conf
Vemos el archivo, con el contenido por defecto.
Nosotros vamos añadir la siguiente línea, con este contenido:

Redirect permanent / https://
y por ultimo, cuando usamos este método, tenemos que reiniciar el servidor web apache.

service apache2 restart

Observación
- En todos los manuales dicen que la forma correcta de escribir la línea sería asín: Redirect permanent / https://192.168.1.20/ personalmente a mi me a funcionado la forma mas abreviada que he usado, osea esta: Redirect permanent / https:// que cada uno decida cual usar.
- Cuando se usa la línea: Redirect permanent / https://192.168.1.20/ la contrabarra del final, unas veces hay que colocarla y otras no, lo mejor es probar las dos opciones y ver cual te funciona.




Usando .htaccess con mod_rewrite

Este método se usa por que no se tiene acceso al servidor como administrador, o porque simplemente te gusta este método, o por lo que sea....

Hay que tener presente, que en este método, estamos usando el módulo mod_rewrite, con lo cual como es lógico, tenemos que tenerlo activado y en funcionamiento en el servidor web apache.

En este caso se crea un archivo llamado .htaccess, ubicado en el directorio público /html de nuestro servidor Apache.
Podemos editar el contenido del archivo .htaccess usando una consola de comandos, o usando el explorador de archivos eXtplorer, o por ftp, etc...

El contenido que tiene que incluir dicho archivo es el siguiente:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Una vez introducido el texto en el archivo .htaccess, guardamos los cambio, y desde ese momento ya funciona. No es necesario reiniciar el servidor web Apache2


============================================================




  Como hacer redirecciones de páginas web en Apache2  


 Usando .htaccess 

- Para redireccionar una URL a una carpeta deberá de añadir la siguiente línea:

Redirect 301 /index.html /servidor20

- Para redireccionar una URL a otra URL deberá de añadir la siguiente línea:

Redirect 301 /pagina.html https://www.dominio.com/wordpress.html

- Para redireccionar de www a sin www deberá de añadir las siguientes líneas:

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.sudominio.com [NC]
RewriteRule ^(.*)$
https://sudominio.com/$1 [R=301,L]

- Para redireccionar desde sin www a www deberá de añadir las siguientes líneas:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sudominio.com [NC]
RewriteRule ^(.*)$
https://www.sudominio.com/$1
[R=301,L]




 Redirecciones mediante PHP y HTML 
























martes, 7 de abril de 2020

Apache y PHP: aumentar tamaño máximo de subida de archivos

PHP y Apache2 tienen una restricción que viene por defecto, limitan el tamaño máximo de archivo y el limite de subida de archivos.

Cuando necesitemos cargar algún archivo a nuestro servidor web. Esto se pone de manifiesto en aplicaciones web donde necesitamos subir archivos (texto, documentos, imágenes, etc...) y éstos son más grandes que el límite estándar, por defecto es de 2 y 8 MB respectivamente.

Cuando usamos algún CMS como por ejemplo: Joomla, WordPress o Drupal, o aplicaciones como eXtplorer, al subir archivos grandes, el resultado casi siempre es un mensaje de error.

Existen tres métodos para solucionar este problema. Aunque te aconsejamos el primer método (Modificar el php.ini global) o el último método (usar el archivo .htaccess)


  Solución 1: Modificar php.ini global  

La mejor solución de todas (solo se puede usar en servidores propios), modificar el archivo de configuración global de PHP, llamado php.ini.

Primero: Estamos usando el Servidor Debian GNU/Linux 10 Buster. Abrimos una consola de comando en el servidor, con un usuario administrador.  

Segundo: Vamos a usar el siguiente comando para saber que versión de php tenemos activa en este momento, (porque puede suceder y es muy normal que tengamos varias versiones de php instaladas en el servidor, aunque solo se puede activar una versión de php a la vez)

php -v

Nos informa que tenemos activado la versión 7.3.14-1

Tercero: Para poderlo modificar, editamos el archivo php.ini que se encuentra en la siguiente carpeta:

/etc/php/7.3/apache2

Nota importante: si tuviéramos mas versiones instaladas, la ruta seria la siguiente, para las versiones 7.X la ruta por defecto es: /etc/php/ mas la carpeta de la versión, por ejemplo: /etc/php/7.3 ó /etc/php/7.4, para la versiones 5.x la ruta es: /etc/php5

Usamos el siguiente comando para ir a dicha carpeta:

cd /etc/php/7.3/apache2
Usamos el comando ls para listar el contenido de dicha carpeta y asegurarnos que allí se encuentra el archivo php.ini.
Observamos que se encuentra el archivo php.ini
Entonce vamos a editarlo, para ello usamos el siguiente comando:

nano /etc/php.ini
Dentro de php.ini, vamos bajando y localizamos la primera variable que nos interesa:
post_max_size = 8M
y cambiamos el valor que trae por defecto, por el valor que necesitemos, (para este manual, de ejemplo vamos a usar el doble del que trae por defecto) es decir los cambiamos a 16M

Seguimos bajando hasta localizar la siguiente variable:
upload_max_filesize = 2M
y cambiamos el valor que trae por defecto, por el valor que necesitemos, (para este manual, de ejemplo vamos a usar el doble del que trae por defecto) es decir los cambiamos a 4M
Una vez realizada la modificación de ambas variables, guardamos los cambios pulsando la siguiente combinación de teclas: Ctrl + O (tecla control mas tecla o), soltamos ambas teclas y pulsamos la tecla Intro o Enter para confirmar.
Una vez guardado los cambios pulsamos la combinación de teclas Ctrl + X (tecla control mas tecla x) para salir.

Cuarto: Por ultimo para que los cambios realizados surtan efectos, tenemos que reiniciar el servidor web Apache2, usando el siguiente comando:

service apache2 restart
Si volvemos a intentar subir un archivo con la misma aplicación, podemos ver como ahora hemos aumentado el tamaño de subida al doble.



Solución 2: Usar php.ini local

Básicamente es hacer lo mismo que la solución anterior, pero tiene grandes diferencias, como que no se modifica el php.ini global, si no que creamos un php.ini local, ademas el php.ini local tiene preferencia sobre el php.ini global.

Este método tiene algunas restricciones:

- Solo se recomienda usarlo en servidores compartidos contratados.

- Los efectos del php.ini local no son recursivos a los subdirectorios en donde se encuentre ubicado, así que no basta crearlo en el directorio raíz de nuestro servidor, si no que tenemos que crear un php.ini en cada directorio donde queramos obtener el efecto deseado.

- Puesto que cada php.ini local tiene preferencia sobre el php.ini global, éstos deben incluir ciertas directivas de compatibilidad necesarias para el web hosting que tengamos contratado, por lo que es necesario consultar al proveedor por dichas directivas.

- Se crea el archivo php.ini y se guardan los cambios. Los cambios aplicados surten efectos, automáticamente al guardar el archivo php.ini

Nota: Para un servidor local de pruebas, no se recomienda esta opción.



  Solución 3: Usar .htaccess  

Creamos o modificamos, en caso de que ya exista el archivo .htaccess en el directorio raíz de nuestro servidor web apache2.
También podemos crear el archivo .htaccess, en la raíz de cualquiera de los CMS: Joomla, Wordpress, Drupal etc..., o de la aplicación o aplicaciones web que usemos en nuestro servidor.
En el archivo .htaccess tenemos que añadir las siguientes líneas (modificar los valores según nuestras necesidades):

php_value upload_max_filesize 16M
php_value post_max_size 4M
php_value memory_limit 128M


Listamos la ventajas de usar .htaccess

   - Es recursivo a directorio y subdirectorio desde la raiz donde se encuentre el archivo .htaccess (no tiene limites)

   - No hay limites de tamaños de archivos (cada uno puede usar el que le interese)

   - Generalmente, se usa en la raíz del CMS para que tenga efectos en todas las carpetas y subcarpetas de dicho cms.

   - Por defecto se puede usar en la raíz del servidor web apache2

   - Los cambios surten efectos nada mas guardar el contenido del archivo .htaccess

   - El archivo .htaccess prevalece sobre el archivo php.ini global










.

phpmyadmin: errores en $cfg['TempDir'] y (blowfish_secret).

Después de tener instalado phpmyadmin (versión 4.9.0.1) en Debian 10 (como explique en este otro manual) 

Voy a la página web oficial de phpmyadmin y veo que hay una versión nueva, pues me decidí a instalar la ultima versión de phpMyAdmin (versión 5.0.2), que hace pocos días fue lanzada (03-21-2020), y claro como estamos en casa sin poder salir por la pandemia del coronavirus, me dije voy a instalar la nueva versión. Esta versión requiere: PHP 7.1 o posterior y MySQL 5.5 o posterior.

La verdad es que la instalación ha sido muy rápida, tan solo he tenido que seguir el manual anterior (instalar phpmyadmin en Debian 10).

Pero cual es mi sorpresa que al entrar en phpmyadmin, me encuentro con dos Warning (advertencia), NO errores.

- El archivo de configuración ahora necesita una frase secreta (blowfish_secret).

- El $cfg[‘TempDir’] (/usr/share/phpmyadmin/tmp/) es inaccesible. phpMyAdmin es incapaz de almacenar plantillas y será algo más lento debido a esto.


Ambas son fáciles de reparar, pero como se que muchas personas necesitaran ayuda para repararlo, aquí va mi aportación.



 Reparar el Warning: El $cfg[‘TempDir’] (/usr/share/phpmyadmin/tmp/) es inaccesible.  

Vamos a comenzar por la que parece mas fácil de subsanar es decir la segunda:

El $cfg[‘TempDir’] (/usr/share/phpmyadmin/tmp/) es inaccesible. phpMyAdmin es incapaz de almacenar plantillas y será algo más lento debido a esto.



La solución es muy fácil, solo tenemos que crear una carpeta llamada tmp dentro del directorio de /usr/share/phpmyadmin.

- Primero nos posicionamos en la carpeta /usr/share/phpmyadmin con el siguiente comando:

cd /usr/share/phpmyadmin


Una vez dentro de la carpeta, listamos el contenido de la misma, para ver si aparece la carpeta tmp. Usamos el siguiente comando:

ls -la

Podemos ver que se encuentra listado en orden alfabético, y como hemos podido ver, no aparece la carpeta tmp
Entonces, vamos a crearla dicha carpeta usando el siguiente comando:

mkdir tmp

ahora volvemos a usar el comando ls -la para asegurarnos que hemos creado la carpeta tmp.

Podemos ver como ahora si aparece la carpeta tmp y observamos, que tanto el usuario como el grupo pertenecen a root.
Entonces vamos a cambiarle el propietario y el grupo. Vamos a ponerle el propietario y grupo a www-data que son el usuario y grupo por defecto de Apache2.
Usaremos el siguiente comando:

chown -R www-data:www-data tmp

Y acto seguido volvemos a listar el contenido de la carpeta para ver que hemos cambiado el propietario.
Vemos que ya tiene el propietario correcto y el grupo correcto (www-data)

Ahora solo nos queda reiniciar el servidor web Apache2 para comprobar que hemos solucionado el primer Warning (advertencia).
Usamos el siguiente comando:

service apache2 restart

Al reiniciar el servidor web Apache2, si estábamos dentro de phpmyadmin, nos saca fuera y nos pide que nos volvamos a logear.

Entramos y nos vamos a la parte inferior, y observamos como hemos solucionado el Warning (advertencia)





 Reparar el Warning: El archivo de configuración ahora necesita una frase secreta (blowfish_secret)

Ahora vamos a reparar ahora el siguiente Warning (advertencia)
En este caso nos puede aparece uno de estos dos warning:

El archivo de configuración ahora necesita una frase secreta (blowfish_secret).

La frase secreta en la configuración (blowfish_secret) es demasiado corta.

Ambas advertencia hacen referencia a la clave secreta (blowfish_secret).

- El primer warning nos informa que necesita una clase, ya que no la tiene, (por eso nos informa)

- El segundo warning nos informa que la clave secreta que tiene es demasiado corta, para solucionarlo, tendremos que ponerle una mas larga. (a si de simple)

Como ambos warning hacen referencia a la clave secreta (blowfish_secret) para solucionarlo, tenemos que estar posicionados en la carpeta donde se guarda la contraseña, osea en: /usr/share/phpmyadmin

Primero nos posicionamos en la carpeta /usr/share/phpmyadmin con el siguiente comando:

cd /usr/share/phpmyadmin

Aquí vamos a editar el archivo llamado config.inc.php.
Usando el editor nano, con el siguiente comando:

nano config.inc.php

Aquí buscamos la variable $cfg['blowfish_secret'] = ' '; puede ser que no aparezca (en caso de no aparecer, seguir leyendo el siguiente paso)
Hemos encontrado la variable y observamos que el espacio reservado para la contraseña (las dos comillas simples) esta vacía, es aquí donde radica la advertencia. Entonces es en este lugar donde escribiremos una contraseña que sea larga, (tiene que ser larga) en caso contrario nos cambiará la advertencia y nos informará que la contraseña es demasiado corta.

En este ejemplo la contraseña que hemos colocado es: 'estaeslaclavequenecesitaparafuncionar´

Observación: Si la variable $cfg['blowfish_secret'] = ' '; no aparece, tenemos que crearlo nosotros, escribiendo la variable nosotros.

Guardamos los cambios pulsando la combinación de teclas Ctrl + O, (tecla Control mas tecla o) y luego salimos usando la combinación de teclas Ctrl + (tecla Control mas tecla X) 

Ahora solo nos falta reiniciar el servidos web Apache2.
Usando el siguiente comando:

service apache2 restart

Al reiniciar el servidor web Apache2, si estábamos dentro de phpmyadmin, nos saca fuera y nos pide que nos volvamos a logear.


Entramos y nos vamos a la parte inferior, y observamos como hemos solucionado el Warning (advertencia)











.