NGINX GPG Key 업데이트

NGINX Plus 또는 nginx.org미리 빌드된 NGINX Open Source binaries를 사용하는 경우 지금 NGINX 소프트웨어의 GPG Key 를 업데이트해야 할 수 있습니다.

Key를 업데이트하기 전까지 소프트웨어 서명을 확인할 수 없게 됩니다. 이 공지는 운영체제 배포물과 같은 NGINX Open Source를 NGINX외의 제공업체에서 얻는 경우에는 해당되지 않습니다.

GPG Key 는 Gnu Privacy Guard 또는 GnuPG의 일부입니다. GnuPG는 PGP로 널리 알려진 OpenPGP 표준의 무료 구현입니다. GPG Key 는 저장소의 패키지가 Key 소유자에 의해 작성되었는지 확인하는 데 사용됩니다.

목차

1. 누가 Key를 업데이트해야 할까요?
2. GPG Key 업데이트
2-1. Debian/Ubuntu
2-2. Amazon Linux, CentOS, Oracle Linux, RHEL, SLES
2-3. FreeBSD에서 Key 업데이트
3. GPG Key의 진위 확인

1. 누가 Key를 업데이트해야 할까요?

NGINX는 RPM 패키지 및 Debian/Ubuntu 리포지토리에서 GPG Key를 사용하여 다운로드한 패키지의 무결성과 원본을 확인할 수 있습니다. 많은 GPG Key 사용자는 Key가 주기적으로 만료되도록 설정하고 따라서 다음과 같은 경우 GPG Key를 업데이트해야 합니다.

  • NGINX Plus 사용
  • NGINX 에서 제공하는 NGINX Open Source binaries를 사용

다음과 같은 NGINX Open Source를 사용하는 경우 GPG Key를 업데이트할 필요가 없습니다.

  • 운영체제 패키지에서. 대부분의 운영체제는 리포지토리에 NGINX를 포함합니다.
  • 소스에서 컴파일. gpg --verify 명령을 사용하여 소스 패키지 서명을 직접 확인할 수 있습니다.

2. GPG Key 업데이트

업데이트된 Key로 전환하려면 Key를 다시 가져오기만 하면 됩니다. 프로세스는 운영체제에 따라 다릅니다.

2-1. Debian/Ubuntu

Key를 잘못 구성한 경우 apt-get update를 실행할 때 다음 오류 중 하나가 표시됩니다.

nginx/x86_64/signature                                                   | 2.9 kB  00:00:10 !!!
http://nginx.org/packages/mainline/centos/7/x86_64/repodata/repomd.xml: [Errno -1] repomd.xml signature could not be verified for nginx
nginx/x86_64/signature                                                   | 2.9 kB  00:00:00 !!!
http://nginx.org/packages/mainline/centos/7/x86_64/repodata/repomd.xml: [Errno -1] Gpg Keys not imported, cannot verify repomd.xml for repo nginx

Key를 업데이트하려면 새 GPG Key를 다운로드하고 이전 Key를 덮어씁니다.

# curl -O https://nginx.org/keys/nginx_signing.key && apt-key add ./nginx_signing.key

새 Key의 만료 날짜를 확인하려면 apt-key list를 실행합니다.

# apt-key list
...
pub   2048R/7BD9BF62 2011-08-19 [expires: 2024-06-14]
uid                  nginx signing key <signing-key@nginx.com>
...

2-2. Amazon Linux, CentOS, Oracle Linux, RHEL, SLES

리포지토리가 GPG Key를 확인하고 검증하도록 구성되어 있는지 확인하십시오. 기본적으로 검사는 NGINX 및 NGINX Plus 리포지토리에 대해 비활성화되어 있지만 NGINX Amplify 리포지토리에 대해서는 활성화되어 있습니다. /etc/yum.repos.d의 yum 리포지토리 파일에 다음 줄이 포함되어 있으면 확인이 비활성화됩니다.

gpgcheck=0

다음은 검사가 비활성화된 샘플 리포지토리 파일 /etc/yum.repos.d/nginx.repo입니다.

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

이 경우 조치가 필요하지 않습니다. (확인을 비활성화하면 새 패키지를 설치할 때 경고가 표시되지만 설치는 성공합니다.)

GPG 확인을 명시적으로 구성한 경우 Key를 교체해야 합니다.

rpm -K 명령을 실행하여 로컬로 다운로드한 패키지의 신뢰성을 확인할 수 있습니다.

  • Key가 없으면 다음 오류가 표시됩니다.
# rpm -K nginx-1.11.3-1.el7.ngx.x86_64.rpm
nginx-1.11.3-1.el7.ngx.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#7bd9bf62)
  • Key가 올바르게 구성된 경우 다음 메시지가 표시됩니다.
# rpm -K nginx-1.11.3-1.el7.ngx.x86_64.rpm
nginx-1.11.3-1.el7.ngx.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

GPG Key를 업데이트하려면 다음 단계를 수행하십시오.

1. 현재 NGINX GPG Key가 설치되어 있는지 확인하십시오.

# rpm -qi gpg-pubkey-7bd9bf62-*

Key가 설치된 경우 출력에 릴리스 번호와 빌드 날짜가 포함됩니다.

...
Release     : 5762b5f8
...
Build Date  : Fri 19 Aug 2011 05:52:34 AM EDT
...

설치되어 있지 않으면 다음 메시지가 나타납니다.

package gpg-pubkey-7bd9bf62-* is not installed

2. 현재 NGINX GPG Key를 제거합니다.

# rpm -e --allmatches gpg-pubkey-7bd9bf62-*

3. 새 Key를 다운로드하고 설치합니다.

# curl -O https://nginx.org/keys/nginx_signing.key
# rpm --import ./nginx_signing.key

(이러한 플랫폼에는 확인 출력이 없습니다.)

4. 새 GPG Key 의 릴리스 및 빌드 날짜 정보를 확인하십시오.

# rpm -qi gpg-pubkey-7bd9bf62-*
...
Release     : 4e4e3262
...
Build Date  : Thu 16 Jun 2016 10:21:44 AM EDT

2-3. FreeBSD에서 Key 업데이트

FreeBSD 패키지 관리 시스템은 GPG Key 를 사용하지 않으므로 조치가 필요하지 않습니다.

3. GPG Key 진위 확인

다운로드한 GPG Key의 진위 여부를 추가로 확인할 수 있습니다. GPG는 “Web of trust” 개념을 사용합니다. Key는 다른 사람의 Key로 서명될 수 있고, 이는 다른 Key로 서명되는 식입니다.

이 접근 방식을 사용하면 임의의 Key와 개인적으로 알고 신뢰하는 사람의 Key 사이에 체인을 구축할 수 있으므로 체인의 첫 번째 Key의 진위를 확인할 수 있습니다. 이 개념은 GPG Mini Howto에 자세히 설명되어 있습니다. NGINX의 Key에는 상대적으로 진위 여부를 쉽게 확인할 수 있는 충분한 서명이 있습니다.

NGINX Plus를 직접 사용해 보시려면 30일 무료 평가판을 신청하거나 NGINX STORE에 연락하여 문의 하십시오.

사용 사례에 대해 최신 소식을 빠르게 전달받고 싶으시면 아래 뉴스레터를 구독하세요.