SW개발/우분투 리눅스

[우분투 22.04] 다음 서명들은 공개키가 없기 때문에 인증할 수 없습니다

world class product 2022. 9. 15. 01:41

 

기존에 우분투 리눅스 20.04가 설치된 서버를 최근에 22.04로 업그레이드했습니다. OS 버전을 업그레이드한다는 것은 여러 가지 문제들을 유발할 수 있습니다. 필자의 경우는 20.04에서 22.04로 업그레이드를 수행한 이후에 십여 가지의 크고 작은 문제들이 발생했고, 구글링을 통해서 모두 해결할 수 있었습니다. 

본 페이지에서는 우분투 리눅스를 22.04로 업그레이드한 이후에 패키지 업데이트 명령을 수행하면 "다음 서명들은 공개키가 없기 때문에 인증할 수 없습니다"라는 메시지가 나오는 문제를 해결하는 방법에 대해서 설명드리고자 합니다. 

 

1. 문제의 상황에 대한 기술

우분투 리눅스 22.04로 업그레이드한 이후에 패키지 업데이트를 수행했습니다. 

$ sudo apt-get update

위의 명령으로 패키지 업데이트를 수행하면 아래와 같이 "다음 서명들은 공개키가 없기 때문에 인증할 수 없습니다"라는 에러 메시지들이 확인됩니다. 

$ sudo apt-get update
받기:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]     
기존:3 http://us.archive.ubuntu.com/ubuntu jammy InRelease                     
기존:4 http://us.archive.ubuntu.com/ubuntu xenial InRelease                    
받기:5 http://us.archive.ubuntu.com/ubuntu jammy-updates InRelease [114 kB]    
받기:6 https://esm.ubuntu.com/infra/ubuntu jammy-infra-security InRelease [7,453 B]
오류:4 http://us.archive.ubuntu.com/ubuntu xenial InRelease                    
  다음 서명들은 공개키가 없기 때문에 인증할 수 없습니다: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32

 

2. apt-key 명령 사용 (deprecated)

위와 같은 상황에서 기존 20.04에서는 "apt-key" 명령을 통해서 이를 해결할 수 있었습니다.

 

2-1. apt-key adv 명령으로 키 다운로드

apt-key adv 명령으로 키를 추가하는 명령을 수행해봤습니다. 

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5

기존의 20.04에서는 잘 동작하는 명령임에도 불구하고, 22.04에서는 아래와 같은 경고 메시지가 표시됩니다. 

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.EN8vEwhHBR/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
gpg: key 40976EAF437D05B5: public key "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

 

2-2. apt-key list 명령으로 키 확인

기존 20.04에서 잘 동작하던 "apt-key list" 명령을 수행해봤습니다. 

$ sudo apt-key list

동일하게 apt-key 명령은 앞으로 지원되지 않을 것이라는 경고 메시지가 출력됩니다. 

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
/etc/apt/trusted.gpg
--------------------
pub   rsa4096 2015-07-14 [SCEA]
      5811 8E89 F3A9 1289 7C07  0ADB F762 2157 2C52 609D
uid           [ unknown] Docker Release Tool (releasedocker) <docker@docker.com>

 

"deprecated"의 의미는 추후에 더 이상 지원되지 않을 예정이라는 의미이기 때문에 지금은 사용 가능하지만, 나중에는 해당 명령이 삭제될 예정이라는 의미입니다. 따라서, 추후에 문제를 일으키기 전에 지금 수정하는 게 좋습니다. 

 

2-3. apt-get update 명령 수행

apt-get update 명령을 수행해봤습니다. 

$ sudo apt-get update

아래와 같이 거슬리는 경고 메시지가 출력됩니다. 

(생략)
기존:12 http://us.archive.ubuntu.com/ubuntu jammy-backports InRelease         
받기:13 http://us.archive.ubuntu.com/ubuntu xenial-backports InRelease [97.4 kB]
내려받기 303 k바이트, 소요시간 5초 (63.4 k바이트/초)
패키지 목록을 읽는 중입니다... 완료
W: http://downloads.sourceforge.net/project/ubuntuzilla/mozilla/apt/dists/all/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: http://us.archive.ubuntu.com/ubuntu/dists/xenial/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: http://security.ubuntu.com/ubuntu/dists/xenial-security/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: http://us.archive.ubuntu.com/ubuntu/dists/xenial-updates/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: http://us.archive.ubuntu.com/ubuntu/dists/xenial-backports/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

메시지를 잘 살펴보면 trusted.gpg에 키가 저장되어 있다는 의미입니다. 해당 위치에 저장되는 것은 레거시(과거로부터 물려 내려온 것)라고 설명되어 있습니다. 

 

3. 키 저장소 이동

이를 해결하기 위해서는 /etc/apt/trusted.gpg 파일을 /etc/apt/trusted.gpg.d 디렉토리로 복사해주면 깔끔하게 해결이 됩니다. 

$ cd /etc/apt
$ sudo cp trusted.gpg trusted.gpg.d/

위와 같이 /etc/apt/trusted.gpg 파일을 /etc/apt/trusted.gpg.d 디렉토리로 복사해준 이후에 apt-get update 명령을 수행해보면 경고 메시지가 모두 사라진 것을 확인할 수 있습니다. 

기존:1 http://udomain.dl.sourceforge.net/project/ubuntuzilla/mozilla/apt all InRelease                                                                                                 
기존:2 http://us.archive.ubuntu.com/ubuntu jammy InRelease                                                                                       
기존:3 http://security.ubuntu.com/ubuntu jammy-security InRelease                                                                                
기존:4 http://security.ubuntu.com/ubuntu xenial-security InRelease                                                                               
기존:5 http://us.archive.ubuntu.com/ubuntu xenial InRelease                                                                                      
기존:6 https://esm.ubuntu.com/infra/ubuntu jammy-infra-security InRelease     
기존:7 http://us.archive.ubuntu.com/ubuntu jammy-updates InRelease
기존:8 https://esm.ubuntu.com/infra/ubuntu jammy-infra-updates InRelease      
기존:9 http://us.archive.ubuntu.com/ubuntu xenial-updates InRelease           
기존:10 http://us.archive.ubuntu.com/ubuntu jammy-backports InRelease
기존:11 http://us.archive.ubuntu.com/ubuntu xenial-backports InRelease
패키지 목록을 읽는 중입니다... 완료     

 

 

4. 관련 링크

본 페이지를 작성하는데 도움이 되었던 자료들의 출처입니다. 

▶ deprecated의 의미

지금까지 "deprecated"의 의미를 유추해서 대략적으로 알고 있었는데, 아래의 페이지에서 "deprecated"의 정확한 의미를 알게 되었습니다. 

 

Deprecated: 정확한 뜻을 이제야 알게되다.

Deprecated 라는 표현을 알게 된 건 비교적 최근이다.그저 막연히, '더 이상 사용되지 않는다' 는 정도로만 알고 있었는데, 오늘 사전에서 이 단어를 찾아보고, 정확한 뜻을 알게 되었다.Deprecate 의

egloos.zum.com

 

▶ legacy의 의미

 

IT/용어 레거시(legacy) 란?

IT/용어 레거시(legacy) 란? legacy ; 레거시 란? 정보기술에서 , 레거시 프로그램과 데이터는 프로그래밍 언어, 플랫폼 그리고 기술 등에 있어, 과거로 부터 물려 내려온 것들을 의미한다. 컴퓨터를

arabiannight.tistory.com

 

이상입니다.