개인 키를 가져오지 않고 공개 키의 ID를 얻는 방법은 무엇입니까?

개인 키를 가져오지 않고 공개 키의 ID를 얻는 방법은 무엇입니까?

개인 키에 대해 다음을 실행하여 키 서버에 설치하는 경우:

gpg --allow-secret-key-import --import my_private.key

아마도 키 서버에서 관련 공개 키를 가져올 것입니까?

gpg: key xyz...: public key "[email protected]" imported

내 질문은: 내 키체인에 개인 키를 설치하지 않고도 이 공개 키의 ID를 어떻게 찾을 수 있습니까?

답변1

Privacy Enhanced Mail(Base64로 인코딩된 DER) 형식의 다음 공개 키가 제공됩니다.

$ wget https://apt.dockerproject.org/gpg -O dockerproject.gpg.pub.key
$ cat dockerproject.gpg.pub.key
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQINBFWln24BEADrBl5p99uKh8+rpvqJ48u4eTtjeXAWbslJotmC/CakbNSqOb9o
ddfzRvGVeJVERt/Q/mlvEqgnyTQy+e6oEYN2Y2kqXceUhXagThnqCoxcEJ3+KM4R
mYdoe/BJ/J/6rHOjq7Omk24z2qB3RU1uAv57iY5VGw5p45uZB4C4pNNsBJXoCvPn
TGAs/7IrekFZDDgVraPx/hdiwopQ8NltSfZCyu/jPpWFK28TR8yfVlzYFwibj5WK
dHM7ZTqlA1tHIG+agyPf3Rae0jPMsHR6q+arXVwMccyOi+ULU0z8mHUJ3iEMIrpT
X+80KaN/ZjibfsBOCjcfiJSB/acn4nxQQgNZigna32velafhQivsNREFeJpzENiG
HOoyC6qVeOgKrRiKxzymj0FIMLru/iFF5pSWcBQB7PYlt8J0G80lAcPr6VCiN+4c
NKv03SdvA69dCOj79PuO9IIvQsJXsSq96HB+TeEmmL+xSdpGtGdCJHHM1fDeCqkZ
hT+RtBGQL2SEdWjxbF43oQopocT8cHvyX6Zaltn0svoGs+wX3Z/H6/8P5anog43U
65c0A+64Jj00rNDr8j31izhtQMRo892kGeQAaaxg4Pz6HnS7hRC+cOMHUU4HA7iM
zHrouAdYeTZeZEQOA7SxtCME9ZnGwe2grxPXh/U/80WJGkzLFNcTKdv+rwARAQAB
tDdEb2NrZXIgUmVsZWFzZSBUb29sIChyZWxlYXNlZG9ja2VyKSA8ZG9ja2VyQGRv
Y2tlci5jb20+iQI4BBMBAgAiBQJVpZ9uAhsvBgsJCAcDAgYVCAIJCgsEFgIDAQIe
AQIXgAAKCRD3YiFXLFJgnbRfEAC9Uai7Rv20QIDlDogRzd+Vebg4ahyoUdj0CH+n
Ak40RIoq6G26u1e+sdgjpCa8jF6vrx+smpgd1HeJdmpahUX0XN3X9f9qU9oj9A4I
1WDalRWJh+tP5WNv2ySy6AwcP9QnjuBMRTnTK27pk1sEMg9oJHK5p+ts8hlSC4Sl
uyMKH5NMVy9c+A9yqq9NF6M6d6/ehKfBFFLG9BX+XLBATvf1ZemGVHQusCQebTGv
0C0V9yqtdPdRWVIEhHxyNHATaVYOafTj/EF0lDxLl6zDT6trRV5n9F1VCEh4Aal8
L5MxVPcIZVO7NHT2EkQgn8CvWjV3oKl2GopZF8V4XdJRl90U/WDv/6cmfI08GkzD
YBHhS8ULWRFwGKobsSTyIvnbk4NtKdnTGyTJCQ8+6i52s+C54PiNgfj2ieNn6oOR
7d+bNCcG1CdOYY+ZXVOcsjl73UYvtJrO0Rl/NpYERkZ5d/tzw4jZ6FCXgggA/Zxc
jk6Y1ZvIm8Mt8wLRFH9Nww+FVsCtaCXJLP8DlJLASMD9rl5QS9Ku3u7ZNrr5HWXP
HXITX660jglyshch6CWeiUATqjIAzkEQom/kEnOrvJAtkypRJ59vYQOedZ1sFVEL
MXg2UCkD/FwojfnVtjzYaTCeGwFQeqzHmM241iuOmBYPeyTY5veF49aBJA1gEJOQ
TvBR8Q==
=Fm3p
-----END PGP PUBLIC KEY BLOCK-----

다음 명령은 모두 키링에 추가하지 않고 긴 키 ID를 표시합니다.

$ gpg --list-packets dockerproject.gpg.pub.key | \
awk '/keyid:/{ print $2 }'
F76221572C52609D
$ gpg --with-colons dockerproject.gpg.pub.key 2>&1 | \
awk -F':' '/pub/{ print $5 }'
F76221572C52609D
$ gpg --dry-run --verbose --import dockerproject.gpg.pub.key 2>&1 | \
awk '/pub/{ print $3 }' | awk -F'/' '{ print $2 }'
F76221572C52609D
$ gpg --with-fingerprint --verbose dockerproject.gpg.pub.key 2>&1 | \
awk '/^sig/{ print $2 }'
F76221572C52609D

이 버전을 사용하는 경우 gpg:

$ gpg --version | head -n 1
gpg (GnuPG) 2.2.4

gpg: WARNING: no command supplied. Trying to guess what you mean ...이러한 명령은 그다지 친숙하지도 않고 직관적이지도 않으며 STDERR과 같이 혼란스러운 메시지를 뱉어냅니다 . 또한 버전마다 미묘하게 다른 경우가 많습니다. 예를 들어 내 버전은 때때로 --verbose일부 답변과 비교해야 하는 경우가 있습니다. 이 버전에는 --show-keys위의 대부분의 명령보다 쉬워 보이는 플래그가 없습니다 .

키 ID에 대한 유용한 정보:

  • 키 ID 짧은 형식:2C52609D
  • 키 ID 긴 형식:F76221572C52609D
  • 주요 서명:58118E89F3A912897C070ADBF76221572C52609D

짧은 형식으로 긴 형식을 사용해야 합니다.안전하지 않다

답변2

키 ID(8바이트, 16진수)를 얻으려면 GPG 1.4.16, 2.1.18 및 2.2.19에서 효과가 있었던 명령은 다음과 같습니다.

gpg --list-packets <key.asc | awk '$1=="keyid:"{print$2}'

키 ID 외에 추가 정보를 얻으려면 다음을 수행하세요.

gpg --list-packets <key.asc

더 많은 정보를 얻으려면:

gpg --list-packets -vvv --debug 0x2 <key.asc

명령

gpg --dry-run --import <key.asc

3가지 버전 모두에서 작동하지만 GPG 1.4.16에서는 짧은(4바이트, 8자리 16진수) 키 ID만 인쇄하므로 키를 식별하는 것이 덜 안전합니다.

다른 답변의 명령(예 gpg --show-keys: , gpg --with-fingerprint, gpg --import --import-options show-only)은 위의 3개 GPG 버전 중 일부에서 작동하지 않으므로 여러 버전의 GPG를 대상으로 하는 경우 이식할 수 없습니다.

답변3

명령줄 도구 를 호출 gpg하고 키 파일을 옵션으로 전달하기 만 하면 됩니다.

$ gpg my_private.key
sec  4096R/1234ABCD 2017-09-12 [email protected]

긴 버전("gpg: WARNING: no command available. ..." 경고 없음 - gnupg-version >= 2.1.23 이후 - 이것을 찾았습니다.여기):

gpg --import-options show-only --import my_private.key

답변4

PGP 키를 참조하면 이것이 답이 될 수 있습니다.

gpg 매뉴얼(gpg(GnuPG) 2.2.11)에서:

--표시-키

이 명령은 OpenPGP 키를 입력으로 사용하고 --list-keys 명령이 로컬에 저장된 키에 대해 수행하는 것과 동일한 방식으로 이에 대한 정보를 인쇄합니다. 또한 목록 옵션 show-unusable-uids, show-unusable-subkeys, show-notations 및 show-policy-urls도 활성화됩니다. 자동화된 처리의 경우 평소와 마찬가지로 이 명령은 --with-colons 옵션과 결합되어야 합니다.

예를 들어:

$ gpg --show-keys docker-ce.gpg pub rsa4096 2017-02-22 [SCEA] 9DC858229FC7DD38854AE2D88D81803C0EBFCD88 uid Docker Release (CE deb) <[email protected]> sub rsa4096 2017-02-22 [S]

여기서 9DC858229FC7DD38854AE2D88D81803C0EBFCD88은 키 ID입니다.

관련 정보