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 dehttps://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
:elgpg
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 degpg --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!