keyserver 지정하기
gpg keyserver
GnuPG에서 keys.openpgp.org 키서버 사용 설정
목적
- OpenPGP 공개키를
keys.openpgp.org키서버에 게시 및 조회 - 키서버 접속 경로를 명시적으로 통제
- 최신 GnuPG(2.x) 구조(dirmngr, keybox 기반)에서 예측 가능한 동작 확보
Debian과 Ubuntu에선
hkps://keyserver.ubuntu.com이 기본으로 되어 있음.
이는 과거 sks계열과 호환되나 append-only 방식이고 일반 개발자에겐 그리…
hkps://keys.openpgp.org로 바꾸는 게 나음.
GnuPG 구성 요소와 역할
최신 GnuPG는 기능별로 구성 요소가 분리되어 있다.
- gpg
- 키 생성, 서명, 검증 수행
- 키 메타데이터 처리 정책 결정
- dirmngr
- 키서버 통신 전담
- hkps(HTTPS) 연결 및 TLS 검증 처리
- keybox
- 공개키 및 메타데이터 저장 구조
- 기존 keyring 방식은 사용되지 않음
키서버와의 실제 네트워크 접속은 dirmngr가 수행하며,
키 내부 메타데이터를 어떻게 해석할지는 gpg의 정책에 의해 결정된다.
키서버 기본 설정 (접속 대상 지정)
실제로 접속할 keyserver URL은 dirmngr 설정 파일에 지정한다.
초기엔 없으므로, 만들어줘야 함.
설정 위치
~/.gnupg/dirmngr.conf
설정 내용
keyserver hkps://keys.openpgp.org
의미:
- dirmngr가 사용할 기본 keyserver를 명시적으로 고정
- 키 조회(
--recv-keys), 전송(--send-keys) 시 이 서버가 사용됨
권한 설정:
chmod 600 ~/.gnupg/dirmngr.conf
설정 반영:
gpgconf --kill dirmngr
gpgconf --launch dirmngr
설정 검증:
dirmngr --gpgconf-test
동작하고 있는 확인:
gpg-connect-agent 'GETINFO version' /bye
# D 2.4.3
# OK
참고: 키 내부 메타데이터로 인한 접속 경로 변경 문제
OpenPGP 공개키에는 다음과 같은 선택적 메타데이터가 포함될 수도 있음.
Preferred-Keyserver: hkp://example.com
이 필드는 키를 생성하거나 배포한 주체가 "이 키는 특정 keyserver를 사용하라"는 권고함 을 의미.
GnuPG는 기본 동작에서,
- 키 내부에 이같은 정보가 존재하면
- 사용자가 설정한 keyserver가 있더라도
- 이를 참조하여 다른 서버로 접속할 수 있음.
이로 인해 다음과 같은 문제가 발생할 수 있음:
- 의도하지 않은 keyserver로의 접속
- 네트워크 경로의 비예측성 증가
- 문서/조직 기준과 다른 서버 사용
해결책: 키 메타데이터에 의한 접속 변경을 차단하는 설정
위와 같은 상황을 방지해야 하는 경우,
키 내부의 Preferred-Keyserver 정보를 무시하도록 강제하는 정책 옵션을 사용할 수 있음.
설정 위치
이 옵션은 gpg의 정책 옵션이므로 다음 파일에 설정:
~/.gnupg/gpg.conf
설정 내용
keyserver-options no-honor-keyserver-url
의미:
- OpenPGP 키 내부의
Preferred-Keyserver메타데이터를 전혀 참조하지 않음 - 모든 키 조회·전송 요청은
dirmngr.conf에 지정된 keyserver- 또는 명령행에서 명시한
--keyserver옵션만 사용
주의:
- 일부 환경에서는 이 옵션을 dirmngr 설정 파일에 넣을 경우 오류가 발생할 수 있으므로
반드시
gpg.conf에만 설정한다. keys.openpgp.org단일 운영 환경에서는 필수 옵션은 아니며, 접속 경로 통제가 필요한 경우에만 사용한다.
동작 확인
gpg --send-keys <SHORT_KEYID 또는 LONG_KEYID>
출력 예:
gpg: sending key XXXXXXXX to hkps://keys.openpgp.org
표시된 URL이 keys.openpgp.org이면 설정이 정상 적용된 것임.
정리
- 실제 keyserver URL 지정
~/.gnupg/dirmngr.conf
- 키 내부 메타데이터 처리 정책
~/.gnupg/gpg.conf
- 접속 대상과 정책을 역할별로 분리하여 설정