새 .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.