====== PGP ====== ===== GnuPG로 Key 생성하기 ===== * https://www.gnupg.org/ * [[https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven|PGP Signatures with Maven]] ==== Key 생성 ==== # key 생성 gpg --gen-key * 질문에 대답하고 가능하면 passphrase도 지정해줄것. * ''~/.gnupg'' 디렉토리에 ''pubring.gpg'', ''secring.gpg''로 생성됨. ==== Key 목록 보기 ==== # 공개키 보기 gpg --list-keys # 비밀키 보기 gpg --list-sceret-keys ==== Sign a file ==== gpg -ab somefile.txt # somefile.txt.asc 파일 생성됨 * ''-a'' : ASCII output * ''-b'' : 별도 Signature 파일 생성 ==== 사인 된 파일 검증 ==== gpg --verify somefile.txt.asc * Maven 저장소에 artifact를 올릴 때는 Primary Key만 사용할 것. ==== subkey 삭제 ==== 일부 PGP 툴은 subkey를 사용해 사인을 하는데 Maven은 이를 인식하지 못한다. 그래서 subkey를 삭제해 버리고 사인할 것. gpg --list-keys # 여기서 pub key의 ID를 가지고 아래에서 사용 gpg --edit-key [KEYID] # 예 A6BAB25C # 아래와 같은 화면이 나왔다고 할 때 gpg (GnuPG/MacGPG2) 2.0.17; Copyright (C) 2011 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Secret key is available. pub 2048R/A6BAB25C created: 2011-08-31 expires: 2012-06-26 usage: SC trust: ultimate validity: ultimate sub 2048R/DD289F64 created: 2011-08-31 expired: 2011-09-30 usage: E sub 2048R/8738EC86 created: 2011-12-19 expires: 2012-06-16 usage: S [ultimate] (1). Juven Xu (for testing) * 여기서 ''usage: E''로 된 것은 Encryption에만 사용, **''usage: S''**가 사이닝할 때사용된다. 따라서 ''S''가 지정된 subkey를 삭제하면 된다(여기서는 8738EC86). * ''key 2'' 명령으로 해당 키 선택(출력 순서대로 0 기반) * ''delkey'' : 선택된 키 삭제 * ''save'' : 저장 ==== PGP Public Key 업로드 ==== * PGP key Servers 중에 하나 선택해서 올리기 * [[https://sks-keyservers.net/|sks-keyservers]] : ''hkp://pool.sks-keyservers.net'' * [[https://keyserver.pgp.com/|keyserver.pgp.com]] * 올리기 gpg --keyserver hkp://pool.sks-keyservers.net --send-keys [KEYID] * 남이 올린 키 받아서 import gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys [KEYID]