GNU/Linux >> Tutoriales Linux >  >> Debian

apt-key está desactualizado. ¿Cómo agregar claves de firma de repositorio OpenPGP sin ellas en Debian, Ubuntu, Linux Mint, Pop! _SO, etc

Este artículo explica cómo agregar de forma segura claves OpenPGP de terceros y repositorios APT en distribuciones Debian, Ubuntu y Linux basadas en ellos como Linux Mint, Pop! _OS, Elementary OS, etc. para reemplazar los obsoletos apt-key .

Si intenta agregar una clave de depósito APT con apt-key en las distribuciones Debian, Ubuntu y Linux basadas en él, verá el siguiente mensaje:Advertencia:apt-key no está actualizado. En su lugar, administre los archivos de llavero en Trusted.gpg.d (consulte apt-key (8)) “.

el apt-key La página de manual menciona que "El uso de apt-key está obsoleto, con la excepción del uso de apt-key del en los scripts de mantenimiento para eliminar las claves existentes del llavero maestro “. Además, "apt-key estará disponible por última vez en Debian 11 y Ubuntu 22.04 .

El motivo de este cambio es que al agregar una clave OpenPGP que se usa para firmar un repositorio APT, /etc/apt/trusted.gpg o /etc/apt/trusted.gpg.d , APT utiliza la clave en todos los demás repositorios configurados en el sistema que no a. he confiado incondicionalmente en signed-by (ver más abajo), incluso los repositorios oficiales de Debian/Ubuntu. Como resultado, cualquier repositorio APT no oficial al que se haya agregado su clave de firma /etc/apt/trusted.gpg o /etc/apt/trusted.gpg.d puede reemplazar cualquier paquete en el sistema. Entonces este cambio se realizó por razones de seguridad (su seguridad).

También vale la pena señalar que durante el apt-key El mensaje de configuración dice "En su lugar, administre los archivos de llavero en Trusted.gpg.d “, el Wiki de Debian dice algo más. Eso es porque agregar claves OpenPGP a /etc/apt/trusted.gpg y /etc/apt/trusted.gpg.d es, como se mencionó anteriormente, igual de inseguro.

Puede continuar usando apt-key por ahora, ya que aún funciona. Sin embargo, sería una buena idea empezar a hacer la transición para usar el signed-by Opción como se explica a continuación, especialmente si está manteniendo un repositorio de terceros.

Entonces, ¿cuál es la forma correcta y segura de obtener repositorios (no oficiales) de terceros y sus claves de firma OpenPGP en distribuciones Debian, Ubuntu y Linux basadas en ellos como Linux Mint, Pop! _OS, sistema operativo elemental, etc. de claves apt obsoletas?

1. Descargue la clave del repositorio APT

De acuerdo con Debian Wiki, por ejemplo, la clave debe descargarse a través de HTTPS a una ubicación que solo puede ser escrita por root /usr/share/keyrings . El nombre de la clave debe contener un nombre corto que describa el repositorio seguido de archive-keyring . Por ejemplo, cuando el repositorio se llama myrepository , el archivo clave debe llamarse myrepository-archive-keyring.gpg .

El archivo de clave OpenPGP puede o no estar blindado con ASCII. Cómo verificar si un archivo clave está blindado con ascii , descargue el archivo de la clave y ejecute este comando (Tenga en cuenta que la extensión de la clave puede ser .gpg, .asc, .key y probablemente otras ):

file <repo-key>.gpg

Si el resultado de este comando es similar al siguiente, la clave está protegida con ASCII:

repo-key.gpg: PGP public key block Public-Key (old)

Sin embargo, así es como puede descargar de manera adecuada y segura una clave de firma de repositorio y agregarla a su sistema:

  • Para llaves OpenPGP blindadas ASCII

Para descargar con wget y agregar dicha clave OpenPGP a su sistema, use:

wget -O- <https://example.com/key/repo-key.gpg> | gpg --dearmor | sudo tee /usr/share/keyrings/<myrepository>-archive-keyring.gpg

Lo que todo en este comando significa / significa:

  • wget descarga la clave de https://example.com/key/repo-key.gpg y le da la clave a stdout (-O- ). Reemplace la URL aquí con la URL de la clave que desea descargar y agregar a su sistema
  • gpg --dearmor :el gpg Command es la herramienta de cifrado y firma de OpenPGP; es --dearmor La opción desempaqueta la entrada de una armadura OpenPGP-ASCII
  • sudo tee /usr/share/keyrings/<myrepository>-archive-keyring.gpg :como superusuario (sudo ), lea la entrada estándar, en este caso la salida de gpg --dearmor , y escribe esto en el /usr/share/keyrings/<myrepository>-archive-keyring.gpg Expediente. Reemplace ese <myrepository> nombre con un nombre descriptivo para la clave del repositorio que está agregando

Por ejemplo, para agregar el repositorio APT a la aplicación Signal, use:

wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/signal-archive-keyring.gpg

O para usar el comando dado como ejemplo en el wiki de Debian (debe ejecutarlo como root, por ejemplo, después de ejecutarlo sudo -i; lo usé curl En lugar de wget para descargar la clave):

curl <https://example.com/key/repo-key.gpg> | gpg --dearmor > /usr/share/keyrings/<myrepository>-archive-keyring.gpg

Ejemplo de uso de este comando para agregar el repositorio Signal APT:

curl https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > /usr/share/keyrings/signal-archive-keyring.gpg

  • Para llaves OpenPGP blindadas no ascii

Descargue la clave OpenPGP con wget y agréguela a su sistema con:

wget -O- <https://example.com/key/repo-key.gpg> | sudo tee /usr/share/keyrings/<myrepository-archive-keyring.gpg>

O para usar el comando dado como ejemplo en el wiki de Debian (debe ejecutarlo como root, por ejemplo, después de ejecutarlo sudo -i ):

wget -O /usr/share/keyrings/<myrepository-archive-keyring.gpg> <https://example.com/key/repo-key.gpg>

No agregué un ejemplo aquí porque no pude encontrar un repositorio de terceros que use una clave OpenPGP no protegida por ASCII.

  • Cómo importar claves OpenPGP directamente desde un servidor de claves a un archivo en /usr/share/keyrings :

sudo gpg --no-default-keyring --keyring /usr/share/keyrings/<myrepository>-archive-keyring.gpg --keyserver <hkp://keyserver.ubuntu.com:80> --recv-keys <fingerprint>

En lugar de hkp://keyserver.ubuntu.com:80 , puede usar un servidor de claves diferente si es necesario.

Ejemplo en el que importamos la clave OpenPGP del PPA Linux Uprising Shutter a /usr/share/keyrings/linux-uprising-shutter-archive-keyring.gpg (Puede obtener la huella dactilar haciendo clic en el enlace verde "Detalles técnicos sobre este PPA" en la página del PPA; se encuentra en "Agregar este PPA a su sistema"):

sudo gpg --no-default-keyring --keyring /usr/share/keyrings/linux-uprising-shutter-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 1CC3D16E460A94EE17FE581CEA8CACC073C3DB2A

También le puede gustar esto:Cómo evitar que un paquete se actualice en Ubuntu, Debian o Linux Mint [APT]


2. Agregue la entrada source.list para el repositorio

Las entradas del repositorio de terceros deben agregarse a la lista /etc/apt/sources.list.d Directorio y no directamente en el /etc/apt/sources.list Archivo.

Anteriormente había un archivo sources.list del /etc/apt/sources.list.d El directorio se vería así:

deb https://repository.example.com/debian/ stable main

Sin embargo, para poder usar la clave agregada en el paso 1, la entrada de sources.list ahora debe tener este aspecto (/etc/apt/sources.list.d/<myrepository.list> ):

deb [signed-by=/usr/share/keyrings/<myrepository>-archive-keyring.gpg] <https://repository.example.com/debian/ stable main>

Es importante tener en cuenta aquí que si también está utilizando el arch=amd64 Opción junto con signed-by , debe separar las dos opciones con un espacio de la siguiente manera:

deb [arch=amd64 signed-by=/usr/share/keyrings/<myrepository>-archive-keyring.gpg] <https://repository.example.com/debian/ stable main>

Por ejemplo, para agregar el repositorio de señales a su sistema Debian/Ubuntu, cree un archivo (como root; por ejemplo, para abrir el editor de texto de la línea de comando Nano con este archivo:sudo nano /etc/apt/sources.list.d/signal.list ) llamado signal.list en /etc/apt/sources.list.d con el siguiente contenido (siempre que ya haya descargado la clave como se describe anteriormente, como /usr/share/keyrings/signal-archive-keyring.gpg ):

deb [arch=amd64 signed-by=/usr/share/keyrings/signal-archive-keyring.gpg] https://updates.signal.org/desktop/apt xenial main

Recuerda ejecutar sudo apt update después de agregar una nueva clave de firma y un repositorio para actualizar las fuentes de software.

También puede agregar el repositorio en formato de archivo Deb822, pero para no complicar más las cosas, no lo explicaré aquí. Puede leer esto en la wiki de Debian.

También le puede gustar esto:Cómo encontrar el paquete que implementa un archivo (instalado o no) en Ubuntu, Debian o Linux Mint

Cómo eliminar una clave OpenPGP existente que se ha agregado al conjunto de claves APT de confianza (/etc/apt/trusted.gpg o /etc/apt/trusted.gpg.d)

Al agregar claves OpenGPG como se describe anteriormente, debe eliminar la misma clave de /etc/apt/trusted.gpg o /etc/apt/trusted.gpg.d si la agregó allí antes. Sin esto, no hay ningún beneficio de seguridad adicional.

Eliminar las claves OpenPGP existentes del /etc/apt/trusted.gpg.d directorio debería ser bastante fácil. Eso es porque el nombre del archivo clave debe ser bastante descriptivo. Por ejemplo, el nombre de archivo de la clave gpg del repositorio Tor de este directorio está en mi sistema deb.torproject.org-keyring.gpg

Para deshacerse de claves preexistentes que se han agregado /etc/apt/trusted.gpg.d , solo necesita eliminar los archivos clave. Deberá hacer esto como root, así que abra el administrador de archivos de su elección como root con admin:// (Por ejemplo, para abrir una ubicación como raíz en Nautilus, presione Ctrl + L Entonces puede escribir y escribir en la barra de direcciones admin:///etc/apt/trusted.gpg.d ) o eliminarlo de la línea de comando con:

sudo rm /etc/apt/trusted.gpg.d/<myrepository-keyring.gpg>

Las siguientes instrucciones también funcionan para quitar llaves del /etc/apt/trusted.gpg.d directorio.

En cuanto a Eliminación de claves APT-GPG almacenadas en /etc/apt/trusted.gpg , las cosas son un poco más complicadas. Use el siguiente comando para enumerar todas las claves APT OpenPGP que se importaron en ambos /etc/apt/trusted.gpg y /etc/apt/trusted.gpg.d :

apt-key list

Las claves almacenadas en /etc/apt/trusted.gpg debe aparecer arriba, seguido de las teclas del /etc/apt/trusted.gpg.d Directorio. Debe verificar la clave uid para saber qué clave quitar. Por lo general, el UID debe mostrar la empresa o el usuario que firmó la clave seguido de su dirección de correo electrónico.

Clave de /etc/apt/trusted.gpg están listados por apt-key Enumere de la siguiente manera (ejemplo):

pub   rsa4096 2016-04-22 [SC]

      B9F8 D658 297A F3EF C18D  5CDF A2F6 83C5 2980 AECF

uid           [ unknown] Oracle Corporation (VirtualBox archive signing key) <[email protected]>

sub   rsa4096 2016-04-22 [E]

El ID de la clave son los últimos 8 caracteres de la huella digital de la clave GPG (en este ejemplo, estos son 2980AECF ).

Para eliminar una clave (desde /etc/apt/trusted.gpg o /etc/apt/trusted.gpg.d ), ahora puede usar:

sudo apt-key del <KEY-ID>

Por ejemplo, para eliminar la clave del ejemplo anterior, use:

sudo apt-key del 2980AECF

Es posible que le guste esto:Cómo listar todos los paquetes en un repositorio en Ubuntu, Debian o Linux Mint [APT]

Referencias:

  • https://wiki.debian.org/DebianRepository/UseThirdParty
  • https://askubuntu.com/a/1307181/1149075
  • https://zebnemeth.wordpress.com/2021/01/15/install-signal-desktop-using-gpg/
  • https://github.com/docker/docker.github.io/issues/11625

¡Gracias a ti/ZebNemeth por esa sugerencia!


Debian
  1. ¿Cómo actualizar la clave GPG para el repositorio MySQL APT en Debian/Ubuntu?

  2. Cómo compilar e instalar wxWidgets en Ubuntu/Debian/Linux Mint

  3. Cómo instalar Oracle Java 16 en Debian, Ubuntu, Pop! _OS o Linux Mint usando el repositorio APT PPA

  4. Cómo instalar Oracle Java 15 en Ubuntu, Debian o Linux Mint usando el repositorio APT PPA

  5. Cómo instalar Oracle Java 14 (JDK 14) en Ubuntu, Debian o Linux Mint desde el repositorio APT PPA

Cómo agregar un repositorio a Debian

Cómo instalar Visual Studio Code en Ubuntu 18.04 / Linux Mint 19 y Debian 9

Cómo instalar VLC 2.0.6 en Ubuntu 12.10, Linux Mint 14

Cómo descargar paquetes con dependencias localmente en Ubuntu, Debian, Linux Mint, Pop OS

Cómo configurar claves SSH en Debian 11 Linux

Cómo instalar Wine Staging, Development o Stable en Ubuntu, Linux Mint o Debian 10 (Evitar problemas de dependencia)