본문 바로가기
운영체제 (LNX,WIN)

Ubuntu 패키지 관리 apt-get 명령어 GPG keyring 키파일 갱신

by 날으는물고기 2023. 12. 6.

Ubuntu 패키지 관리 apt-get 명령어 GPG keyring 키파일 갱신

# apt update
Hit:1 https://download.docker.com/linux/ubuntu jammy InRelease
Hit:2 http://security.ubuntu.com/ubuntu jammy-security InRelease
Hit:3 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:5 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy InRelease
Hit:6 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Hit:7 https://downloadcontent.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_22.04  InRelease
Hit:8 https://downloadcontent.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.24/xUbuntu_22.04  InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
W: https://downloadcontent.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_22.04/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: https://downloadcontent.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.24/xUbuntu_22.04/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

이 경고는 apt 패키지 매니저에서 GPG 키를 관리하는 방식이 변경되면서 발생하는 것입니다. 이전에는 apt-key를 사용하여 GPG 키를 관리했지만, 이제는 trusted.gpg 키링이 더 이상 권장되지 않고 레거시로 간주되기 때문에 발생합니다.

Ubuntu: apt-key is deprecated

새로운 GPG 키 관리 방식을 사용하여 이러한 경고를 해결할 수 있습니다.

 

다음은 해당 경고를 해결하는 단계입니다.

  1. apt-key 명령어 사용 중단
    apt-key 명령어 사용을 중단하고 대신 새로운 GPG 키 관리 방식을 사용해야 합니다.
  2. 레포지토리 설정 확인
    경고가 발생하는 레포지토리의 설정을 확인합니다. 위 로그에서는 OpenSUSE의 레포지토리로 보입니다.
  3. GPG 키 다운로드
    GPG 키를 새로운 방식으로 다운로드합니다.
    gpg --keyserver keyserver.ubuntu.com --recv-keys <KEY>
    일반적으로는 gpg 명령어를 사용하여 진행합니다. 예를 들어:<KEY> 부분에는 실제로 사용 중인 레포지토리의 GPG 키 값이 들어가야 합니다.
  4. 다운로드한 GPG 키 추가
    다운로드한 GPG 키를 apt 키 링에 추가합니다. 다음 명령어를 사용합니다.
    gpg --export --armor <KEY> | sudo apt-key add -
  5. 레포지토리 업데이트
    변경 사항을 적용하기 위해 apt 레포지토리를 업데이트합니다.
    sudo apt update

이제 새로운 GPG 키 관리 방식을 사용하여 레포지토리의 업데이트 및 패키지 설치를 진행하면 해당 경고가 표시되지 않습니다. 주의해야 할 점은 이 방법은 현재 사용 중인 레포지토리의 GPG 키에 따라 다를 수 있다는 것입니다. 따라서 <KEY> 값은 실제로 사용 중인 레포지토리의 GPG 키로 대체해야 합니다.

 

apt-key 명령어로 등록된 GPG 키 목록을 확인하는 방법은 다음과 같습니다. 하지만 기억해 주세요. 이 방법은 이제는 레거시 방식이므로 새로운 방식을 사용하는 것이 권장됩니다.

  1. 등록된 GPG 키 목록 확인
    아래 명령어를 실행하면 현재 시스템에 등록된 GPG 키 목록이 표시됩니다. 각 키는 고유한 ID와 키의 소유자 등 정보가 나열됩니다.
    sudo apt-key list
  2. 문제되는 키 확인
    목록에서 사용 중인 레포지토리의 GPG 키를 찾아서 문제되는 키인지 확인합니다.
  3. 문제되는 키 제거
    문제되는 키를 확인했다면 해당 키를 제거합니다. 아래 명령어를 사용합니다.
    sudo apt-key --keyring /etc/apt/trusted.gpg del <KEY_ID>
    <KEY_ID>는 제거하려는 키의 ID로 대체되어야 합니다.
    주의: 키를 제거할 때는 신중하게 선택해야 합니다. 잘못된 키를 제거하면 시스템에 문제가 발생할 수 있습니다.
  4. 새로운 GPG 키 추가
    새로운 GPG 키를 다운로드하고 추가합니다.
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <NEW_KEY>
    <NEW_KEY>는 새로 추가할 GPG 키의 값으로 대체되어야 합니다.
  5. 레포지토리 업데이트
    변경 사항을 적용하기 위해 apt 레포지토리를 업데이트합니다.
    sudo apt update

새로운 GPG 키가 등록되었고 문제되는 키가 제거되었기 때문에 해당 경고는 나타나지 않습니다. 하지만 여전히 새로운 GPG 키 관리 방식을 사용하는 것이 권장되므로, 가능하면 이 방식을 사용하는 것이 좋습니다.

 

새로운 GPG 키 관리 방식으로 전환됨에 따라 apt-key 명령어를 사용하여 등록된 키 목록을 확인하는 대신, gpg 명령어를 사용하여 GPG 키를 확인해야 합니다. 아래는 현재 등록된 GPG 키 목록을 확인하고 문제되는 키를 찾는 방법입니다.

  1. 현재 등록된 GPG 키 목록 확인
    아래 명령어를 실행하면 현재 시스템에 등록된 모든 GPG 키 목록이 표시됩니다. 이 목록에서 사용 중인 레포지토리의 키를 찾아야 합니다.
    gpg --list-keys
  2. 레포지토리에서 사용 중인 키 확인
    레포지토리에서 사용 중인 GPG 키를 확인하려면 먼저 레포지토리의 GPG 키 ID를 알아야 합니다.
    이 정보는 레포지토리의 공식 웹사이트나 문서에서 찾을 수 있습니다.
  3. GPG 키 목록에서 해당 키 찾기
    다시 처음 실행한 gpg --list-keys 명령어의 결과에서 레포지토리에서 사용 중인 키를 찾습니다.
    보통 키는 8자리의 키 ID로 표시됩니다.
  4. 문제되는 키 제거
    찾은 키 ID를 사용하여 해당 키를 제거합니다.
    gpg  --delete-key <KEY_ID>
    <KEY_ID>는 실제로 사용 중인 키의 ID로 대체되어야 합니다.
    주의: 키를 제거할 때는 신중하게 선택해야 하며, 잘못된 키를 제거하면 시스템에 문제가 발생할 수 있습니다.
  5. 새로운 GPG 키 추가
    앞서 설명한 대로 올바른 GPG 키를 다운로드하고 추가합니다.
    gpg --export --armor <NEW_KEY> | sudo apt-key add -
    <NEW_KEY>는 새로 추가할 GPG 키의 값으로 대체되어야 합니다.
  6. 레포지토리 업데이트
    변경 사항을 적용하기 위해 apt 레포지토리를 업데이트합니다.
    sudo apt update

새로운 GPG 키를 등록하는 경우, 이제는 apt-key 대신에 직접 GPG 명령어를 사용하여 키를 추가하는 방식이 권장됩니다. 아래는 새로운 GPG 키를 등록하는 단계입니다.

  1. GPG 키 다운로드
    새로운 GPG 키를 다운로드합니다. 이때, 키의 ID 또는 fingerprint가 필요합니다.
    gpg --keyserver keyserver.ubuntu.com --recv-keys <KEY>
    <KEY>는 새로운 키의 ID나 fingerprint로 대체되어야 합니다.
  2. GPG 키 확인
    다운로드한 키가 올바른지 확인합니다. 키의 fingerprint를 비교하여 일치하는지 확인하는 것이 좋습니다.
    gpg --fingerprint <KEY>
    <KEY>는 다운로드한 키의 ID로 대체되어야 합니다.
  3. APT에 GPG 키 추가
    GPG 키를 APT에 직접 추가합니다.
    gpg --export --armor <KEY> | sudo tee /etc/apt/trusted.gpg.d/<KEY>.asc
    <KEY>는 새로운 키의 ID로 대체되어야 합니다.
    이 명령어는 GPG 키를 trusted.gpg.d 디렉토리에 추가합니다.
  4. 레포지토리 업데이트
    변경 사항을 적용하기 위해 apt 레포지토리를 업데이트합니다.
    sudo apt update
    이제 새로운 GPG 키가 등록되었고, 해당 키가 사용되는 레포지토리의 업데이트 및 패키지 설치를 위해 사용될 것입니다.

이 방식은 apt-key를 사용하지 않고 직접 GPG 명령어를 사용하여 키를 관리하는 더 안전하고 현대적인 방식입니다.

 

아래는 Ubuntu 22.04로 이전한 후에 나타나는 문제를 해결하기 위한 것으로, 더 이상 사용되지 않는 키를 새로운 형식으로 변환하는 데 사용됩니다. 주의해야 할 점은 이 명령어를 실행하기 전에 자신의 시스템에서 어떤 동작을 하는지 정확히 이해해야 한다는 것입니다.

 

한줄 명령어

for KEY in $(apt-key --keyring /etc/apt/trusted.gpg list | grep -E "(([ ]{1,2}(([0-9A-F]{4}))){10})" | tr -d " " | grep -E "([0-9A-F]){8}\b" ); do K=${KEY:(-8)}; apt-key export $K | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/imported-from-trusted-gpg-$K.gpg; done

위 명령어를 보기 쉽게 정리

for KEY in $( \
    apt-key --keyring /etc/apt/trusted.gpg list \
    | grep -E "(([ ]{1,2}(([0-9A-F]{4}))){10})" \
    | tr -d " " \
    | grep -E "([0-9A-F]){8}\b" \
); do
    K=${KEY:(-8)}
    apt-key export $K \
    | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/imported-from-trusted-gpg-$K.gpg
done

다음은 명령어의 간략한 설명과 함께 해석된 내용입니다.

  1. 키 목록 가져오기
    시스템에 등록된 키 목록을 가져옵니다.
    apt-key --keyring /etc/apt/trusted.gpg list
  2. 정규표현식을 사용하여 키 식별
    10개의 그룹으로 묶인 4자리의 16진수 문자열을 찾아냅니다. 이는 키의 전체 서명을 제공합니다.
    grep -E "(([ ]{1,2}(([0-9A-F]{4}))){10})"
  3. 공백 제거
    각 줄에서 모든 공백을 제거하여 키 서명이 깨지지 않도록 합니다.
    tr -d " "
  4. 마지막 8자리 키 식별
    각 행에서 마지막 8자리의 키 식별자를 가져옵니다.
    grep -E "([0-9A-F]){8}\b"
  5. 키 변환 및 저장
    for KEY in $(…); do K=${KEY:(-8)}; apt-key export $K | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/imported-from-trusted-gpg-$K.gpg; done
    • for KEY in $(…); do
      각 키에 대해 반복합니다.
    • K=${KEY:(-8)}
      현재 키의 마지막 8자리를 K 변수에 할당합니다.
    • apt-key export $K
      해당 키를 내보내고,
    • sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/imported-from-trusted-gpg-$K.gpg
      GPG를 사용하여 새로운 형식으로 변환한 다음, 새로운 형식의 GPG 파일로 저장합니다.

이 명령어는 사용하지 않는 키를 새로운 형식으로 변환하여 더 이상의 경고를 피할 수 있습니다. 그러나 명령어를 실행하기 전에 시스템 및 명령어의 동작을 정확히 이해하고, 필요하다면 백업을 만들어두는 것이 중요합니다.

728x90

댓글