Windows에서 gpg를 p12로 내보내기 위해). 내 이해에 따르면 다음을 수행해야합니다. gpgsm.exe

gpg4win을 사용하고 있으며 gpg 개인 키를 p12 형식으로 내보내려고합니다 (Lotus Notes에서 가져 오기 위해). 내 이해에 따르면 다음을 수행해야합니다.

gpgsm.exe -o "XXXXXXXX_private.p12" --export-secret-key-p12 0xXXXXXXXX

그러나 다음과 같은 오류가 발생합니다. “비밀 키 없음”실제로 gpgsm -K는 아무것도 반환하지 않습니다 (gpg -K 작동).

내가 무엇을 놓치고 있습니까?



답변

잘못된 프로그램을 사용하고 있다고 생각합니다. S / MIME 프로토콜을pgpsm 사용하여 서명, 확인, 암호화 또는 암호 해독에 사용됩니다 .

나는이없는 pgp4win반면에, 그러나에 따라 man 페이지 ,이 공개 및 비밀 키를 내 보내야합니다 :

gpg -o XXXXXXX_private.p12 --export [key id] --export-format pkcs12 --cert

에 대한 정보 pkcs12는 다음과 같습니다.

pkcs12이진 블록 만 출력됩니다. 기본 파일 확장자는 .p12입니다. 서명 된 키가 쌍을 이루어야합니다. 입력은 정확히 하나의 키와 일치해야합니다. 이 경우 –cert가 필요합니다.

그래서 --cert그 옵션에 대한 반영없이 옵션을 포함 시켰습니다 .

--cert 서명 키를 사용할 수있는 경우이 옵션은 X.509 발급자 긴 이름 또는 32 비트 또는 64 비트 키 ID입니다.


나는 더 많은 테스트 (현재 gpg4win 사용)를 수행했으며 부분적으로 나 자신과 모순되어야합니다. gpgsmgpg4win 의 도구는 다음과 같이 설명합니다.

gpgsm은 gpg와 유사한 도구로 X.509 인증서 및 CMS 프로토콜에서 디지털 암호화 및 서명 서비스를 제공합니다. 주로 S / MIME 메일 처리를위한 백엔드로 사용됩니다.

실제로 올바른 소리입니다.

따라서 질문에 게시 된 귀하의 명령은 완전히 합리적인 것으로 보입니다. 단지 두 가지 단서 만 있습니다.

  • -a옵션을 통해 ASCII 기갑 출력을 사용하려고 할 수 있습니다
  • 그리고 내 보낸 키의 문자 세트에 관한 옵션이 있는데, 이는 종종 (특히 오래된) Windows 프로그램의 문제입니다.

--p12-charset name
gpgsm은 PKCS # 12 파일의 암호를 인코딩 할 때 UTF-8 인코딩을 사용 합니다. 이 옵션을 사용하면 암호를 지정된 인코딩 이름으로 강제로 인코딩 할 수 있습니다. 키를 가져 오는 데 사용 된 응용 프로그램에서 다른 인코딩을 사용하여 gpgsm에서 생성 된 파일을 가져올 수없는 경우에 유용합니다.
name에 일반적으로 사용되는 값은 Latin1CP850 입니다. gpgsm 자체는 가장 일반적으로 사용되는 인코딩으로 인코딩 된 암호가있는 파일을 자동으로 가져옵니다.