sábado, 22 de julio de 2017

Problema con: apt y trusted.gpg

Resulta que actualice de Debian Jessie a Debian Stretch y añadí una un programa no incluidos en los repositorios oficiales de Debian (Skype for linux). A partir de aquí empecé a tener problemas con apt.

Busque en internet y no encontré la solución a la primera, pero como uno es muy constante después de mucho probar, e investigar encontré la solución.

El problema esta muy bien documentado en el web oficial de debian, en el  enlace de abajo, que copio el contenido integro.
https://debian-handbook.info/browse/es-ES/stable/sect.package-authentication.html

Comprobación de la autenticidad de un paquete

La seguridad es muy importante para los administradores de Falcot Corp. Por consiguiente, necesitan asegurar que sólo instalen paquetes con garantía de que provienen de Debian sin modificaciones en el camino. Un «cracker» podría intentar agregar código malicioso en un paquete que de otra forma sería legítimo. Si se instala tal paquete, éste podría hacer cualquier cosa para la que dicho «cracker» lo diseño, inclusive revelar contraseñas o información confidencial por ejemplo. Para evitar este riesgo, Debian provee un sello contra modificaciones para garantizar — al momento de instalación — que el paquete realmente proviene de su encargado oficial y no fue modificado por un tercero.
El sello funciona con una firma y una cadena de «hashes» criptográficos. El archivo Release, provisto por las réplicas Debian, es el firmado. Contiene una lista de los archivos Packages (incluyendo sus formas comprimidas, Packages.gz y Packages.xz, así como las versiones incrementales), junto con sus «hashes» MD5, SHA1 y SHA256 lo que asegura que los archivos no fueron modificados. Estos archivos Packages contienen una lista de los paquetes Debian disponibles en la réplica junto con sus hashes lo que asegura, a su vez, que el contenido de los paquetes mismos tampoco fue modificado. 
Las llaves confiables son administradas con el programa apt-key que se encuentra en el paquete apt. Este programa mantiene un conjunto de llaves públicas GnuPG que son utilizadas para verificar las firmas disponibles en los archivos Release.gpg disponibles en las réplicas. Puede utilizarse para agregar nuevas llaves de forma manual (cuando se necesitan réplicas no oficiales). Generalmente sin embargo, sólo necesitará las llaves oficiales de Debian. Estas llaves se mantienen actualizadas de forma automática por el paquete debian-archive-keyring (que crea los conjuntos de llaves correspondientes en /etc/apt/trusted.gpg.d). Sin embargo, la primera instalación de este paquete requiere cierto cuidado: aún si el paquete está firmado como cualquier otro, no se puede verificar dicha firma. Los administradores cautelosos deberían, por lo tanto, verificar las huellas de las llaves importadas antes de confiar en ellas para instalar nuevos paquetes: 

# apt-key fingerprint
/etc/apt/trusted.gpg.d/debian-archive-jessie-automatic.gpg
----------------------------------------------------------
pub   4096R/2B90D010 2014-11-21 [expires: 2022-11-19]
      Key fingerprint = 126C 0D24 BD8A 2942 CC7D  F8AC 7638 D044 2B90 D010
uid                  Debian Archive Automatic Signing Key (8/jessie) 

/etc/apt/trusted.gpg.d/debian-archive-jessie-security-automatic.gpg
-------------------------------------------------------------------
pub   4096R/C857C906 2014-11-21 [expires: 2022-11-19]
      Key fingerprint = D211 6914 1CEC D440 F2EB  8DDA 9D6D 8F6B C857 C906
uid                  Debian Security Archive Automatic Signing Key (8/jessie) 

/etc/apt/trusted.gpg.d/debian-archive-jessie-stable.gpg
-------------------------------------------------------
pub   4096R/518E17E1 2013-08-17 [expires: 2021-08-15]
      Key fingerprint = 75DD C3C4 A499 F1A1 8CB5  F3C8 CBF8 D6FD 518E 17E1
uid                  Jessie Stable Release Key 

/etc/apt/trusted.gpg.d/debian-archive-squeeze-automatic.gpg
-----------------------------------------------------------
pub   4096R/473041FA 2010-08-27 [expires: 2018-03-05]
      Key fingerprint = 9FED 2BCB DCD2 9CDF 7626  78CB AED4 B06F 4730 41FA
uid                  Debian Archive Automatic Signing Key (6.0/squeeze) 

/etc/apt/trusted.gpg.d/debian-archive-squeeze-stable.gpg
--------------------------------------------------------
pub   4096R/B98321F9 2010-08-07 [expires: 2017-08-05]
      Key fingerprint = 0E4E DE2C 7F3E 1FC0 D033  800E 6448 1591 B983 21F9
uid                  Squeeze Stable Release Key 

/etc/apt/trusted.gpg.d/debian-archive-wheezy-automatic.gpg
----------------------------------------------------------
pub   4096R/46925553 2012-04-27 [expires: 2020-04-25]
      Key fingerprint = A1BD 8E9D 78F7 FE5C 3E65  D8AF 8B48 AD62 4692 5553
uid                  Debian Archive Automatic Signing Key (7.0/wheezy) 

/etc/apt/trusted.gpg.d/debian-archive-wheezy-stable.gpg
-------------------------------------------------------
pub   4096R/65FFB764 2012-05-08 [expires: 2019-05-07]
      Key fingerprint = ED6D 6527 1AAC F0FF 15D1  2303 6FB2 A1C2 65FF B764
uid                  Wheezy Stable Release Key 


Una vez que las llaves apropiadas se encuentran en el conjunto, APT revisará las firmas antes de cualquier operación riesgosa para que las interfaces muestren una advertencia cuando estén instalando un paquete sobre el que no se puede verificar autenticidad.



Los problemas que causó Skype por no tener la llave publica fue el siguiente

Los errores que me devolvía APT era los siguientes:

W: http://security.debian.org/…/dists/stretch/updates/InRelease: The key(s) in the keyring /etc/apt/trusted.gpg are ignored as the file is not readable by user '_apt' executing apt-key.

W: http://ftp.de.debian.org/debian/dists/stretch/InRelease: The key(s) in the keyring /etc/apt/trusted.gpg are ignored as the file is not readable by user '_apt' executing apt-key.

W: GPG error: https://repo.skype.com/deb stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1F3045A5DF7587C3
 

W: The repository 'https://repo.skype.com/deb stable InRelease' is not signed. 


Las causas eran las siguientes:
Perdía las llaves publicas de Debian stretch, modificaba el fichero /etc/apt/trusted.gpg
y le asignaba los permisos 600, es decir: rw- --- ---
Cuando lo correcto es tener dicho archivo con los permisos 644, es decir: rw- r-- r--

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

Solución a los errores:

Fue tan fácil como:
1- Borrar el archivo /etc/apt/trusted.gpg usando el comando rm como administrador: rm /etc/apt/trusted.gpg

2- Seguir los pasos de uno de los dos puntos siguientes. Yo realice la OPCION 1, el punto 2.1. por ser el mas rápido.

3- Reinstalar el paquete: debian-archive-keyring


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

OPCION 1

2.1- Instalar la llave publica directamente de un servidor de ubuntu, ya que Skype for linux, esta creado para los siguientes distribuciones, y la llave publica es la misma para todas las distribuciones:

- Ubuntu 14.04+ de 64 bits
- Debian 8+ de 64 bits
- openSUSE 13.3+ de 64 bits
- Fedora Linux 24+ de 64 bits 

Entonces con el siguiente comando instale la llave publica de Skype for linux.

apt-key adv --keyserver keyserver.ubuntu.com --recv 1F3045A5DF7587C3 



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


OPCION 2

2.2- Descargamos la llave publica de Skype for linux desde el repositorio oficial de Skype.
Enlace oficial : https://repo.skype.com/
y hacer todo lo que indica en dicho repositorio.
Copio y pego todo el contenido de dicho enlace, pero a nosotros los usuario de Debian solo nos interesa el apartado APT:

APT

# make sure you have 'apt-transport-https' installed
dpkg -s apt-transport-https > /dev/null || bash -c "sudo apt-get update; sudo apt-get install apt-transport-https -y"
curl https://repo.skype.com/data/SKYPE-GPG-KEY | sudo apt-key add -
echo "deb [arch=amd64] https://repo.skype.com/deb stable main" | sudo tee /etc/apt/sources.list.d/skype-stable.list
sudo apt-get update
sudo apt-get install skypeforlinux -y

Yum

sudo yum-config-manager --add-repo=https://repo.skype.com/data/skype-stable.repo
sudo yum install skypeforlinux -y

DNF

sudo dnf config-manager --add-repo https://repo.skype.com/data/skype-stable.repo
sudo dnf install skypeforlinux -y

Zypper

sudo zypper ar -f https://repo.skype.com/rpm/stable skypeforlinux
sudo zypper update
sudo zypper install skypeforlinux









.