새 .gnupg 디렉토리 : 이전 비밀 키를 새 설치로 가져 오기


9

OS (Ubuntu 16.04)를 다시 설치했으며 다음을 포함하는 오래된 .gnupg 디렉토리가 있습니다.

gpg-agent.conf  
gpg-agent-info-<hostname> 
gpg.conf  
private-keys-v1.d  
pubring.gpg  
secring.gpg  
S.gpg-agent  
trustdb.gpg

이전 공개 및 개인 키를 새 gnupg로 가져오고 싶습니다. (새 gnupg2는 새로운 EC 암호화 옵션의 일부인 데이터베이스 형식에 약간의 차이가 있음을 이해하기 때문에 단순히 .gnupg 디렉토리를 새 설치에 복사하지 않았습니다.)

다음은 공개 키에는 효과가 있었지만 비밀 키에는 실패했습니다.

gpg --export --keyring=~/.gnupg.old/pubring.gpg | gpg --import
gpg --export-secret-keys --keyring=~/.gnupg.old/secring.gpg | gpg --import

후자는 다음과 같이 응답했습니다.

gpg: can't open `~/.gnupg/secring.gpg'  <== New Secret Keyring
gpg: WARNING: nothing exported
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0

시크릿 링 을 열지 못했습니다 . 파일로 내보내려고 할 때 같은 오류가 발생합니다.

gpg --export-secret-keys --keyring=~/.gnupg.old/secring.gpg > secret.asc

gpg: can't open `~/.gnupg/secring.gpg'  <== New Secret Keyring
gpg: WARNING: nothing exported

내 비밀 키에는 마스터 키의 개인 부분이 제거되어 있기 때문에으로도 시도 --export-secret-subkeys했지만 응답은 동일했습니다. 내보내기 후 내 키 ID (이메일 주소)를 입력해도 작동하지 않습니다. 반면에 키를 나열 할 수 있습니다.

gpg --list-keys --keyring=~/.gnupg.old/secring.gpg

gpg: Oops; key lost!
node 0x1e7ee00 01/00 type=secret-key
node 0x1e9cbd0 00/00 type=user-id  "Me <Me@home.com>" ....
node 0x1e99dd0 00/00 type=signature  class=13 keyid=XXXXXXXX ts=1383637282
node 0x1e9c510 00/00 type=secret-subkey
node 0x1eaa210 00/00 type=signature  class=18 keyid=XXXXXXXX ts=1449138073
node 0x1eaf1f0 00/00 type=secret-subkey
node 0x1eaf580 00/00 type=signature  class=18 keyid=XXXXXXXX ts=138363647

( "키 분실"은 제거 된 비밀 마스터 키를 의미한다고 가정합니다.) 누구든지이 문제를 해결하는 방법을 지시 할 수 있습니까?

@Jens (아래)의 도움으로 다음이 작동합니다.

gpg --no-default-keyring --secret-keyring=~/.gnupg.old/secring.gpg --export-secret-keys | gpg --import

답변:


7

우선, 당신은 일종의 "아니오"를하고 있습니다. gpgUbuntu 16.04에서 여전히 GnuPG gpg21.4.20이며 GnuPG 2.0.28에서 2.1.11로 점프했습니다. 그런 다음 GnuPG 2.1이 파일 형식 (새로운 키 저장소 형식 "keybox"/을 변경 .kbx하고 비밀 키 링을 공개 키 링으로 병합) 을 일부 변경 했지만 여전히 호환 가능하며 처음 호출 할 때 비밀 키 링 병합을 수행합니다 gpg2. 키링 형식은 수동으로 변환 하지 않는 한 이전 형식을 유지 합니다 . 이전 형식은 완전히 지원되며 새 형식은 성능 향상을 제공합니다. 새로운 키 박스 형식으로 제안 된 마이그레이션 경로 는 완전히 새로운 것으로 이동하지 않고 이전 GnuPG 디렉토리 에서 변환 하는 것입니다.

기존 pubring.gpg 파일을 키 박스 형식으로 변환하려면 먼저 ownertrust 값을 백업 한 다음 파일 이름을 (예를 들어) 공개 키로 바꾸십시오. 따라서 GnuPG 버전에서 인식하지 못하고 가져 오기를 실행 한 후 마지막으로 복원하십시오 ownertrust 값 :

$ cd ~/.gnupg
$ gpg --export-ownertrust >otrust.lst
$ mv pubring.gpg publickeys
$ gpg2 --import-options import-local-sigs --import publickeys
$ gpg2 --import-ownertrust otrust.lst

그런 다음 공개 키 파일의 이름을 이전 GnuPG 버전에서 사용할 수 있도록 다시 바꿀 수 있습니다. 이 경우 두 개의 독립적 인 공개 키 사본이 있습니다. ownertrust 값은 trustdb.gpg 파일의 모든 gpg 버전에 의해 유지되지만 가져 오기를 유지하려면 위의 예방 조치를 취해야합니다.

게시 한 오류 메시지를 고려하면 새 ~/.gnupg홈 디렉토리 또는 비밀 키 링 ~/.gnupg/secring.gpg에 대한 일부 권한 이 키를 작성하기에 충분하지 않은 것 같습니다 . 루트 사용자가 실수로 GnuPG를 호출 한 경우에 종종 발생합니다.

의 메시지 --list-keys는 정상적인 출력이 아니지만 오류 메시지 인 것 같습니다. 임의의 키링을 인쇄하려면 --no-default-keyringand --secret-keyring옵션과 --list-secret-keyscommdn을 사용하십시오 (일반적으로 항상 GnuPG 명령 앞에 옵션이 있습니다).

gpg --no-default-keyring --secret-keyring=secring.gpg --list-secret-keys

좋아, 당신은 소유권 문제에 그것을 못 박았다. 내 새 secring.gpg는 루트가 소유했습니다. 또한 --no-default-keyring--secret-keyringbefore --list-secret-keys를 사용하면 인식 가능한 출력이 생성됩니다. 이제 내가 가진 것을 보도록하겠습니다.
Diagon

공장! 그리고 업그레이드 정보에 감사드립니다. 매우 도움이됩니다.
Diagon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.