Saltar al contenido

¿Qué comandos (exactamente) deberían reemplazar el obsoleto apt-key?

Tenemos el resultado a este apuro, o por lo menos eso pensamos. Si presentas preguntas compártelo en un comentario y sin dudas

Solución:

Necesitas saber por quéapt-key add es obsoleto

Todas las respuestas hasta ahora funcionan en torno al síntoma (“No use apt-key add“) pero no abordan el problema real eso llevó a apt-key add siendo obsoleto. El problema no es una cuestin de anexar un key a un archivo de llavero grande etc/apt/trusted.gpg vs poner manualmente un solokey archivos de llavero en el directorio /etc/apt/trusted.gpg.d/. Estas dos cosas son equivalentes, y hacer cualquiera de ellas es un gran riesgo de seguridad.

El problema es que cualquier key tu agregas a cualquiera de lo anterior cuenta con la confianza total e incondicional de apt. Esto significa que cualquier repositorio de terceros cuya firma apta key está adentro está permitido reemplazar cualquier paquete en todo su sistema, sin preguntas. Incluso si asumimos que ninguno de los propietarios de repositorios es malintencionado, un atacante podría comprometer un repositorio, que tiene el mismo resultado final.

Las instrucciones dadas en la respuesta de Ugo Delle Donne para convertir el key para el formato (heredado) keyring v4 que apt aceptará son correctos y útiles, pero eso es solo la mitad de la solución. Los reiteraré aquí (limpiados un poco) para que todos los pasos se consoliden en un solo lugar:

  • Descargar el key:
    • wget https://host.domain.tld/path/to/.

      (No es necesario -O o >; wget predeterminado para guardar el archivo en su directorio actual con el mismo nombre de archivo que tiene en el servidor).

  • Verifique que el tipo de archivo sea “PGP público key block Public-Key (antiguo) “:
    • file .
  • Convierta el key importándolo en un llavero temporal, luego exportándolo nuevamente:
    • gpg --no-default-keyring --keyring ./temp-keyring.gpg --import .
    • gpg --no-default-keyring --keyring ./temp-keyring.pgp --export --output .gpg
    • rm temp-keyring.gpg

Ahora que tienes tu convertido key, no agregarlo a aptalmacén de claves de confianza copiándolo en /etc/apt/trusted.gpg.d/. En cambio, ponlo en algún lugar como /usr/local/share/keyrings/. (Necesitarás crear eso keyrings directorio primero). No hay nada especial en esa ubicación, es solo una convención que /usr/local es para cosas específicas de esta máquina, share porque no es un binario o una biblioteca o específico para un usuario determinado, y keyrings es solo un nombre descriptivo.

En este punto, nada ha cambiado y apt no conoce el key existe. El último paso es modificar el específico .list archivo para que el repositorio le diga a apt dónde encontrar el key por ese repositorio específico.

  • Edita el archivo /etc/apt/sources.list.d/.list, y en el medio deb y la URL, agregue [signed-by=/usr/local/share/keyrings/.gpg]

Ahora apt aceptará eso keyla firma de todos los paquetes en ese repositorio y solamente ese repositorio.

Notas:

  • Si ya tiene archivos de anillo de claves en /etc/apt/trusted.gpg.d/, usted puede Copiarmoverse a ellos /usr/local/share/keyrings/ tal como está y, a continuación, actualice todos los .list archivos para que cada uno tenga un signed-by campo apuntando a su propio key.
  • Si ya tienes keys en el /etc/apt/trusted.gpg archivo de llavero más allá del repositorio oficial keys, esta respuesta detalla los pasos para ubicarlos y eliminarlos. Luego, puede seguir los mismos pasos anteriores para configurarlos de la manera más segura. (También es posible exportarlos desde ese llavero, pero los pasos exactos se dejan como ejercicio para el lector).
  • Para importar un repositorio key de un servidor de llaves a un archivo independiente:
    • gpg --no-default-keyring --keyring .gpg --keyserver --recv-keys
    • Esto debería darte una key que apto aceptará sin conversión.
  • Apt sigue siendo muy confiado, y un repositorio malicioso o comprometido puede eludir esta medida fácilmente porque los paquetes actualmente pueden ejecutar código de shell arbitrario como raíz en sus scripts de configuración. Sin embargo, cerrar un vector de ataque no hace daño, y se está progresando (lentamente) en otros frentes.
  • Opcionalmente, puede cambiar a la versión más nueva y más detallada Deb822 formato usando individual .sources archivos en lugar de .list archivos. Es más trabajo, pero personalmente encuentro el resultado mucho más legible.

Fuentes:

  • Wiki de Debian
  • Respuesta excelente y detallada sobre Unix y Linux StackExchange

Me encontré con el mismo problema y afortunadamente alguna otra pregunta iluminó el camino. En mi ejemplo, estaba tratando de agregar un repositorio de teamviewer a un Kali Linux reciente y estaba siendo bloqueado por key verificación.

Estoy bastante seguro de que hay una forma más elegante de hacer esto, pero los siguientes pasos me ayudaron a solucionar el problema:

  1. Descarga el relevante key

    wget -O - https://download.teamviewer.com/download/linux/signature/TeamViewer2017.asc > ~/teamviewer.key

  2. Verificar el tipo de archivo

    file ~/teamviewer.key

    debería ser PGP público key bloquear la clave pública (antiguo)

  3. Crea un llavero

    gpg --no-default-keyring --keyring ./teamviewer_keyring.gpg --import teamviewer.key

  4. Este archivo todavía no es válido key que se puede agregar a /etc/apt/trusted.gpg.d/ ya que es un llavero, pero del llavero podemos extraer el key con

    gpg --no-default-keyring --keyring ./teamviewer_keyring.gpg --export > ./teamviewer.gpg

  5. Este archivo es el key quieres mudarte a la de confianza key carpeta

    sudo mv ./teamviewer.gpg /etc/apt/trusted.gpg.d/

contento sudo apt update!!!

La razón de esta desaprobación es porque el uso de apt-key add simplemente agrega el gpg key al llavero APT global de confianza. Es similar al método preferido de agregar local_repo.list para /etc/apt/sources.list.d/ En lugar de usar add-apt-repository dep /link/to/repo version, que agrega el mensaje a la global sources.list expediente.

Creo que es un poco más incómodo de entender que usar la carpeta .d, pero esencialmente queremos obtener el gpg key en un archivo de anillo de claves independiente, luego apunte a este archivo de anillo de claves en la lista de fuentes. La ubicación predeterminada del archivo del anillo de claves es /usr/share/keyringsy puede ser un archivo .asc o .gpg. No estoy seguro de la diferencia, pero sé que los archivos de llavero globales son archivos binarios, no texto sin formato.

Por ejemplo:

El uso de nombres genéricos puede ser un poco difícil de entender a veces, así que aquí hay un ejemplo de instalación de mongoDB:

Obtenga el gpg de MongoDB key y agregarlo a un nuevo archivo de llavero

curl https://www.mongodb.org/static/pgp/server-4.2.asc | sudo tee -a /usr/share/keyrings/buster-mongodb-org-4_2.asc

Agregue una entrada de fuente para apt, apuntando a este nuevo llavero

echo "deb [signed-by=/usr/share/keyrings/buster-mongodb-org-4_2.asc] https://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main

Instale mongodb desde este repositorio recién agregado

sudo apt install -y mongodb-org

Referencia

Esto todavía es nuevo para mí, pero la mayor parte de lo que sé proviene de esta excelente respuesta en unix SE

Tienes la opción de estimular nuestra misión exponiendo un comentario y dejando una valoración te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4.5)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *