리눅스/Debian or Ubuntu

우분투(Ubuntu) 패키지 관리 - apt-key 명령 사용법

씨실과 날실 2020. 5. 20. 09:00


apt-key 설명

apt-key는 apt가 패키지를 인증하는 데 사용하는 키 목록을 관리하는 패키지입니다.

키를 사용하여 인증된 패키지는 신뢰할 수 있는 것으로 간주됩니다.


지원되는 키링 파일

apt-key는 키 박스가 아닌 "gpg"확장자를 가진 파일에서 바이너리 OpenPGP 형식 ( "GPG 키 공개 링"이라고도 함) 만 지원합니다


apt-key 명령 구문의 예(synopsis)

SYNOPSIS
       apt-key [--keyring filename] {add filename | del keyid | export keyid |
               exportall | list | finger | adv | update | net-update |
               {-v | --version} | {-h | --help}}


apt-key 명령

add filename

신뢰할 수 있는 키 목록에 새 키를 추가랍니다.

키는 매개 변수 filename으로 지정된 파일 이름에서 또는 파일 이름이 표준 입력(키보드)를 통해 입력된 경우 읽습니다.

apt-key를 통해 수동으로 추가된 키가 해당 리포지토리 소유자사 공개한 올바른 것인지 검증되어야 하며 만약 그렇지 않으면 그렇지 않으면 apt-secure(8) 기반 보안 구조가 완전히 훼손됩니다.

참고 :이 명령을 사용하지 않고 동일한 효과를 내기 위해선 설명이 포함된 이름과 "gpg"또는 "asc"를 파일 확장자로 하여 /etc/apt/trusted.gpg.d/ 디렉토리에 직접 키링을 배치해야합니다.

다운받은 서명키 등록

study@study-VirtualBox:~$ wget https://dl-ssl.google.com/linux/linux_signing_key.pub
--2020-05-04 16:33:59--  https://dl-ssl.google.com/linux/linux_signing_key.pub
Resolving dl-ssl.google.com (dl-ssl.google.com)... 64.233.189.190, 64.233.189.136, 64.233.189.93, ...
접속 dl-ssl.google.com (dl-ssl.google.com)|64.233.189.190|:443... 접속됨.
HTTP request sent, awaiting response... 200 OK
Length: 10218 (10.0K) [application/octet-stream]
Saving to: ‘linux_signing_key.pub’

linux_signing_key.p 100%[===================>]   9.98K  --.-KB/s    in 0.005s  

2020-05-04 16:33:59 (1.94 MB/s) - ‘linux_signing_key.pub’ saved [10218/10218]

study@study-VirtualBox:~$ 


study@study-VirtualBox:~$ sudo apt-key add linux_signing_key.pub
[sudo] study의 암호: 
OK
study@study-VirtualBox:~$ 


표준입력에서 웹상의 파일을 바로 등록

study@study-VirtualBox:~$ wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
[sudo] study의 암호: 
OK
study@study-VirtualBox:~$ 


trusted.gpg 파일과 trusted.gpg~ 파일(숨김) 두 파일이 경로 /etc/apt 에 생성됩니다.


del keyid

신뢰할 수 있는 키 목록에서 해당 키를 제거합니다.

study@study-VirtualBox:~$ apt-key list
/etc/apt/trusted.gpg
--------------------
pub   dsa1024 2007-03-08 [SC]
      4CCA 1EAF 950C EE4A B839  76DC A040 830F 7FAC 5991
uid           [ unknown] Google, Inc. Linux Package Signing Key 
sub   elg2048 2007-03-08 [E]

pub   rsa4096 2016-04-12 [SC]
      EB4C 1BFD 4F04 2F6D DDCC  EC91 7721 F63B D38B 4796
uid           [ unknown] Google Inc. (Linux Packages Signing Authority) 
sub   rsa4096 2019-07-22 [S] [expires: 2022-07-21]

/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-archive.gpg
------------------------------------------------------
pub   rsa4096 2012-05-11 [SC]
      790B C727 7767 219C 42C8  6F93 3B4F E6AC C0B2 1F32
uid           [ unknown] Ubuntu Archive Automatic Signing Key (2012) 

/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg
------------------------------------------------------
pub   rsa4096 2012-05-11 [SC]
      8439 38DF 228D 22F7 B374  2BC0 D94A A3F0 EFE2 1092
uid           [ unknown] Ubuntu CD Image Automatic Signing Key (2012) 

/etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg
------------------------------------------------------
pub   rsa4096 2018-09-17 [SC]
      F6EC B376 2474 EDA9 D21B  7022 8719 20D1 991B C93C
uid           [ unknown] Ubuntu Archive Automatic Signing Key (2018) 

study@study-VirtualBox:~$ 


정규 키 삭제 방법

study@study-VirtualBox:/etc/apt$ sudo apt-key del "4CCA 1EAF 950C EE4A B839  76DC A040 830F 7FAC 5991"
OK
study@study-VirtualBox:/etc/apt$ 


간단 키 삭제 방법

study@study-VirtualBox:~$ sudo apt-key del 7FAC5991
OK
study@study-VirtualBox:~$ 

뒤의 8자리만 적어주면 됩니다.

간단 키 삭제 방법은 권장하지 않습니다.


export keyid

해당 ID 키의 공개키 값 블록을 표준 출력(일반적으로 모니터 화면)으로 출력합니다.

study@study-VirtualBox:~$ apt-key export "4CCA 1EAF 950C EE4A B839  76DC A040 830F 7FAC 5991"
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGiBEXwb0YRBADQva2NLpYXxgjNkbuP0LnPoEXruGmvi3XMIxjEUFuGNCP4Rj/a
kv2E5VixBP1vcQFDRJ+p1puh8NU0XERlhpyZrVMzzS/RdWdyXf7E5S8oqNXsoD1z
fvmI+i9b2EhHAA19Kgw7ifV8vMa4tkwslEmcTiwiw8lyUl28Wh4Et8SxzwCggDcA
feGqtn3PP5YAdD0km4S4XeMEAJjlrqPoPv2Gf//tfznY2UyS9PUqFCPLHgFLe80u
QhI2U5jt6jUKN4fHauvR6z3seSAsh1YyzyZCKxJFEKXCCqnrFSoh4WSJsbFNc4PN
b0V0SqiTCkWADZyLT5wll8sWuQ5ylTf3z1ENoHf+G3um3/wk/+xmEHvj9HCTBEXP
78X0A/0Tqlhc2RBnEf+AqxWvM8sk8LzJI/XGjwBvKfXe+l3rnSR2kEAvGzj5Sg0X
4XmfTg4Jl8BNjWyvm2Wmjfet41LPmYJKsux3g0b8yzQxeOA4pQKKAU3Z4+rgzGmf
HdwCG5MNT2A5XxD/eDd+L4fRx0HbFkIQoAi1J3YWQSiTk15fw7RMR29vZ2xlLCBJ
bmMuIExpbnV4IFBhY2thZ2UgU2lnbmluZyBLZXkgPGxpbnV4LXBhY2thZ2VzLWtl
eW1hc3RlckBnb29nbGUuY29tPohjBBMRAgAjAhsDBgsJCAcDAgQVAggDBBYCAwEC
HgECF4AFAkYVdn8CGQEACgkQoECDD3+sWZHKSgCfdq3HtNYJLv+XZleb6HN4zOcF
AJEAniSFbuv8V5FSHxeRimHx25671az+uQINBEXwb0sQCACuA8HT2nr+FM5y/kzI
A51ZcC46KFtIDgjQJ31Q3OrkYP8LbxOpKMRIzvOZrsjOlFmDVqitiVc7qj3lYp6U
rgNVaFv6Qu4bo2/ctjNHDDBdv6nufmusJUWq/9TwieepM/cwnXd+HMxu1XBKRVk9
XyAZ9SvfcW4EtxVgysI+XlptKFa5JCqFM3qJllVohMmr7lMwO8+sxTWTXqxsptJo
pZeKz+UBEEqPyw7CUIVYGC9ENEtIMFvAvPqnhj1GS96REMpry+5s9WKuLEaclWpd
K3krttbDlY1NaeQUCRvBYZ8iAG9YSLHUHMTuI2oea07Rh4dtIAqPwAX8xn36JAYG
2vgLAAMFB/wKqaycjWAZwIe98Yt0qHsdkpmIbarD9fGiA6kfkK/UxjL/k7tmS4Vm
CljrrDZkPSQ/19mpdRcGXtb0NI9+nyM5trweTvtPw+HPkDiJlTaiCcx+izg79Fj9
KcofuNb3lPdXZb9tzf5oDnmm/B+4vkeTuEZJ//IFty8cmvCpzvY+DAz1Vo9rA+Zn
cpWY1n6z6oSS9AsyT/IFlWWBZZ17SpMHu+h4Bxy62+AbPHKGSujEGQhWq8ZRoJAT
G0KSObnmZ7FwFWu1e9XFoUCt0bSjiJWTIyaObMrWu/LvJ3e9I87HseSJStfw6fki
5og9qFEkMrIrBCp3QGuQWBq/rTdMuwNFiEkEGBECAAkFAkXwb0sCGwwACgkQoECD
D3+sWZF/WACfeNAu1/1hwZtUo1bR+MWiCjpvHtwAnA1R3IHqFLQ2X3xJ40XPuAyY
/FJG
=Quqp
-----END PGP PUBLIC KEY BLOCK-----
study@study-VirtualBox:~$ 

exportall

신뢰할 수 있는 모든 키를 표준 출력(일반적으로 모니터 화면)으로 출력합니다.

study@study-VirtualBox:~$ apt-key exportall
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGiBEXwb0YRBADQva2NLpYXxgjNkbuP0LnPoEXruGmvi3XMIxjEUFuGNCP4Rj/a
kv2E5VixBP1vcQFDRJ+p1puh8NU0XERlhpyZrVMzzS/RdWdyXf7E5S8oqNXsoD1z
fvmI+i9b2EhHAA19Kgw7ifV8vMa4tkwslEmcTiwiw8lyUl28Wh4Et8SxzwCggDcA
.... 중략 ...
jyNSi351Z157E+SWDGxtgwixyPziL56UavL/eeYJWeS/WqvGzZzsAtgSujFVLKWy
UaRi0NvYW3h/I50Tzj0Pkm8GtgvP2UqAWvy+iRpeUQ2ji0Nc
=w6vD
-----END PGP PUBLIC KEY BLOCK-----
study@study-VirtualBox:~$ 

list, finger

키 지문이 있는 신뢰할 수있는 키를 나열합니다.

study@study-VirtualBox:~$ apt-key list
/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-archive.gpg
------------------------------------------------------
pub   rsa4096 2012-05-11 [SC]
      790B C727 7767 219C 42C8  6F93 3B4F E6AC C0B2 1F32
uid           [ unknown] Ubuntu Archive Automatic Signing Key (2012) 

/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg
------------------------------------------------------
pub   rsa4096 2012-05-11 [SC]
      8439 38DF 228D 22F7 B374  2BC0 D94A A3F0 EFE2 1092
uid           [ unknown] Ubuntu CD Image Automatic Signing Key (2012) 

/etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg
------------------------------------------------------
pub   rsa4096 2018-09-17 [SC]
      F6EC B376 2474 EDA9 D21B  7022 8719 20D1 991B C93C
uid           [ unknown] Ubuntu Archive Automatic Signing Key (2018) 

study@study-VirtualBox:~$ 


adv

고급 옵션을 gpg로 전달합니다.

예를 들어 adv --recv-key를 사용하면 키 서버에서 키를 신뢰할 수 있는 키목록 모음로 직접 다운로드됩니다.

study@study-VirtualBox:~$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8



study@study-VirtualBox:~$ sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
점검이 수행되지 않으므로 주의 없이 사용하면 apt-secure (8) 인프라를 완전히 손상시킬 수 있습니다.

net-update

study@study-VirtualBox:~$ sudo apt-key net-update

URI에서 아카이브 키링을 가져 와서 마스터 키와 비교하여 유효성을 검증합니다. 

데비안의 APT는이 명령을 지원하지 않고 대신 업데이트에 의존하지만 우분투의 APT는 지원합니다.


apt-key 옵션 (Options)

이전 섹션에서 설명한 명령 전에 옵션을 정의해야합니다.


--keyring filename

이 옵션을 사용하면 명령이 작동해야 하는 특정 키링 파일을 지정할 수 있습니다.

기본적으로 trusted.gpg 파일과 trusted.gpg.d 디렉토리의 모든 부분에서 명령이 실행됩니다.

trusted.gpg가 기본 키링입니다. 일반적으로 여기에 새로운 키가 추가됩니다.